4

我们有一个基于 python 的模块,我们希望通过创建一个 linux 系统可以理解的编译副本(即.so文件)来分发给我们的客户

我们已经评估了 cython,它很容易做到这一点,但我们看到它创建的 .so 文件与 .pyx/.py 文件一样多,但我们想为完整的包创建一个 uber .so 文件。从某种意义上说,我们希望巧妙地做到这一点,如果我们将来向其他模块添加依赖项,uber 编译的文件应该具有所有依赖项。

有什么建议,我们如何才能巧妙地做到这一点?

4

1 回答 1

2

cx_freeze可以创建可重新分发的 Python 模块包。

例如:

cxfreeze my_script_using_my_python_module.py --target-dir dist

python包是编译的还是常规的python并不真正相关。相关的是,您的客户需要具有兼容的 python 版本以及兼容的 libc/gcc 才能运行它。

因此,出于向第三方分发 python 模块的目的,单个模块.so不会所有人兼容。曾经。

cx_freeze捆绑所需的 python 解释器版本和 python 包,因此没有依赖关系。它也是跨平台的。

于 2018-04-06T14:30:19.497 回答