【问题标题】:Packaging Python with compiled Julia?用编译的 Julia 打包 Python?
【发布时间】:2020-02-14 20:19:40
【问题描述】:

我正在开发一个严重依赖 Julia 库的 python 包。我们实际上没有使用 PyCall,而是使用 PackageCompiler.jl 将 Julia 代码编译成共享对象 .so 文件。它在 python 模块中使用ctypes 引用。它还需要 Julia 系统映像。

有人对如何打包有任何想法吗?我知道您可以在 distutils 中构建 C/C++,但我还没有真正找到跨多个平台包含 Julia 的好地方。

这里要明确一点,对于使用这个 Python 包的人来说,他们需要安装 Julia,并且他们需要适合他们系统的共享对象库。这些可以通过运行 Julia 编译器 juliac.jl 来获得。其他一切都在 Python 中。

【问题讨论】:

标签: python julia setuptools setup.py distutils


【解决方案1】:

假设您使用 setup.py 来构建您的库,您需要在调用 setup() 时将共享库添加到 package_data

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)并隔离(用哈希重命名,修复链接)共享库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多