如何使用 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 打包所有东西)
也许这是重复的,但我找不到针对这种特殊情况的答案:我想编译并将我的 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 打包所有东西)