Ответ 1
Итак, я получил это, чтобы работать на вас.
Пожалуйста, посмотрите Объединение расширений Cython с помощью Pyinstaller
Быстрый старт:
git clone https://github.com/prologic/pyinstaller-cython-bundling.git
cd pyinstaller-cython-bundling
./dist/build.sh
Это создает статический двоичный файл:
$ du -h dist/hello
4.2M dist/hello
$ ldd dist/hello
not a dynamic executable
И выводит результат:
$ ./dist/hello
Hello World!
FooBar
В основном это привело к созданию простой setup.py
, которая строит расширения file_a.so
и file_b.so
, а затем использует pyinstaller чтобы связать приложение с расширениями в один исполняемый файл.
Пример setup.py
:
from glob import glob
from setuptools import setup
from Cython.Build import cythonize
setup(
name="test",
scripts=glob("bin/*"),
ext_modules=cythonize("lib/*.pyx")
)
Построение расширений:
$ python setup.py develop
Объединение приложения:
$ pyinstaller -r file_a.so,dll,file_a.so -r file_b.so,dll,file_b.so -F ./bin/hello