首页 > 解决方案 > 如何使用 cython 将 python 脚本导入模块编译为可执行文件

问题描述

也许这是重复的,但我找不到这种特殊情况的答案:我想编译我的 python 代码并将其分发到 c,然后使用 gcc 分发到二进制文件。对于分发,我使用 appimagetool 来包含库。

我使用命令

cython3 -3 myapp.py --embed

创建 C 代码,然后

gcc myapp.c -o myapp $(pkg-config --libs --cflags python3)

生成可执行文件。这可行,但是当我将可执行文件传输到另一台机器时,出现错误

No Module named AnyRandomModule

AnyRandomModule 是我要导入的 python 模块。当我通过安装它时

pip3 install AnyRandomModule

有用。但我不希望用户需要自己安装库。如何将导入的 python 模块捆绑到我的可执行文件中,或者以其他方式将它们编译为可以从中导入的 .so 共享库文件?我已经尝试使用 Cython 文档中的快速入门示例将它们转换为 .so 文件,但是在执行 myapp 可执行文件时我仍然遇到相同的错误,即使这些 .so 文件位于同一目录中。

标签: pythoncythonpython-3.7cythonize

解决方案


你可以使用这个答案: Building Cython-compiled python code with PyInstaller

将所有内容捆绑在一起(使用 cython,然后使用应该打包所有软件包的 pyinstaller 打包所有内容)


推荐阅读