Упаковка Python скомпилированной Джулией? - PullRequest
2 голосов
/ 17 октября 2019

Я работаю над пакетом python, который сильно зависит от библиотеки Julia. Вместо того, чтобы использовать PyCall, мы фактически компилируем код Julia в файлы общих объектов .so, используя PackageCompiler.jl. На него ссылаются, используя ctypes в модуле python. Это также требует системного изображения Джулии.

У кого-нибудь есть идеи, как это упаковать? Я знаю, что вы можете собрать C / C ++ внутри distutils, но я не нашел подходящего места для включения Julia на нескольких платформах.

Чтобы было понятно, кому-то использовать этот пакет Pythonим нужна установка Julia, и им нужны соответствующие библиотеки общих объектов для их системы. Их можно получить, запустив компилятор Julia juliac.jl. Все остальное в Python.

1 Ответ

0 голосов
/ 18 октября 2019

Предполагая, что вы используете setup.py для создания своей библиотеки, вам нужно добавить общие библиотеки к package_data при вызове setup():

setup.py

# call out to build system to build the shared library

setup(
  name="my-extension",
  ext_modules="..."
  package_data="/path/to/mylib.so"
)

См. Дополнительную документацию здесь: https://docs.python.org/3/distutils/setupscript.html#installing-package-data

После запуска python setup.py bdist_wheel для создания файла .whl, вы также можете запустить auditwheel , который будет тегом совместимости (например, manylinux1) и изолировать (переименовать с помощью хэша, исправлений) общие библиотеки.

...