我正在研究高度依赖Julia库的python软件包。实际上,我们没有使用PyCall,而是使用.so
将Julia代码向下编译为共享对象PackageCompiler.jl
文件。在python模块中使用ctypes
进行引用。它还需要一个Julia系统图像。
有人对如何打包此文件有任何想法吗?我知道您可以在distutils
内构建C / C ++,但我还没有真正找到在多个平台上都包括Julia的好地方。
这里要清楚,对于要使用此Python软件包的人,他们需要安装Julia,并且需要为其系统使用适当的共享库。这些可以通过运行Julia编译器juliac.jl
来获得。其他所有内容都在Python中。
假设您正在使用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)并隔离(使用哈希,修复链接重命名)共享库。