【问题标题】:How to compile Python program and its dependencies into a single C like binary? [duplicate]如何将 Python 程序及其依赖项编译成单个 C 类二进制文件? [复制]
【发布时间】:2021-08-19 16:47:52
【问题描述】:

我正在尝试将我的 Python 程序及其所有依赖项放入可以从命令行执行的单个二进制文件中。我在post here 中使用 Cython3 遵循了 Broken Man 的建议,如果你有一个简单的 Python 脚本,它就可以工作。但是,如果您在代码中使用 import 语句来包含依赖项,则它不起作用。

我正在寻找一种解决方案,让我能够像在 C 中那样执行我的程序,例如 ./a.out

请不要建议使用chmod +x 将其转换为可执行文件。这不是我要找的。这也不是桌面应用程序 - 它需要从命令行执行。

可以使用 Cython/Cythonize 来编译依赖项,还是应该使用其他工具来编译依赖项?我所依赖的依赖项是使用 pip 安装的库和同一目录中的自定义写入文件的混合。

【问题讨论】:

  • 我想你要找的是pyinstaller。这会从您的 Python 字节码、其所有依赖项的字节码、这些依赖项所需的任何二进制扩展以及 Python 解释器的副本创建一个可执行文件。请注意,它会非常大,并且需要很长时间才能加载。
  • 关于使用 cython 解决这个问题:stackoverflow.com/a/59389683/5769463

标签: python compilation dependencies cython cythonize


【解决方案1】:

您要查找的工具是Nuikta

语法是:python -m nuitka --standalone --follow-imports programname.py 其中:-

--follow-import:使导入的模块(包括本地导入)也包含在二进制文件中。 --standalone: 制作独立的二进制文件

【讨论】:

  • Nuitka 非常慢。只需一个简单的 hello world 应用程序,并且仅将 click 作为依赖项导入,我的服务器大约需要花费大约 10 分钟。 21 分钟。编译。配置了ccache。你是对的,它确实有效。但目前它超出了任何实际应用。因此,我试图让 cython 工作。
  • @HamzaZubair Cython 不处理依赖关系,也没有声称处理依赖关系。它确实是创建捆绑应用程序的错误工具。
猜你喜欢
  • 2014-05-30
  • 2021-11-03
  • 2018-03-05
  • 2021-11-26
  • 2021-12-27
  • 2012-01-06
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
相关资源
最近更新 更多