如何使用 cython 将 python 脚本导入模块编译为可执行文件

How to compile python script importing modules to executable using cython

也许这是重复的,但我找不到针对这种特殊情况的答案:我想编译并将我的 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 文件位于同一目录中。

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

将所有东西捆绑在一起(使用 cython,然后使用应该打包所有包的 pyinstaller 打包所有东西)