python - 如何使用 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 文件位于同一目录中。
解决方案
你可以使用这个答案: Building Cython-compiled python code with PyInstaller
将所有内容捆绑在一起(使用 cython,然后使用应该打包所有软件包的 pyinstaller 打包所有内容)
推荐阅读
- java - Java中的x 509证书和X509CertificateHolder有什么区别?
- javascript - AJAX 调用 PHP 函数后禁用 AJAX/Javascript 弹出窗口
- c++ - C++ 模板类给出了“错误:非模板 X 用作模板”
- java - Citrus Simulator 在接收序列化的 xml 数据时抛出 Nullpointer 异常
- c++ - 对于 C++,有 std::strchr() 的任何现代替代品吗?
- node.js - 如何使用 node.js(Firefox 或 Chrome)在 Heroku 上运行 Selenium-Webdriver
- uitableview - 在 javafx 中的 tableView 中自定义 TableCell
- amazon-web-services - 与 aws-cli s3 同步的文件模式匹配
- python - Python通过串口将数据写入Vellemank8090
- c# - 如何通过标识符(名称,Uid ...)访问用户控件?