如何将python脚本编译为二进制可执行文件

Dew*_*ari 106 python executable compilation

我需要将Python脚本转换为Windows可执行文件.

我安装了Python 2.6 python26.

我创建了一个脚本并将其保留C:\pythonscript.在这个文件夹里面有两个文件

Setup.pyoldlogs.py(这个文件需要转换)

setup.py 代码是

from distutils.core import setup
import py2exe

setup(console=['oldlogs.py'])
Run Code Online (Sandbox Code Playgroud)

如何将oldlogs.py转换为exe文件?

zen*_*poy 57

或者使用PyInstaller作为py2exe的替代品.这是一个很好的起点.PyInstaller让你也为linux和mac创建可执行文件......

  • [cx_Freeze](http://cx-freeze.sourceforge.net/)更好,它甚至支持python 3.3. (8认同)
  • @AshwiniChaudhary,两者似乎都是跨平台的.. 但是,如果我必须根据 `GitHub` 星数快速判断使用哪一个,`PyInstaller` 有 ~4000 颗星,`cx_Freeze` 有 200 颗星。所以`PyInstaller` 似乎更受欢迎,并且可能涵盖了更多的边缘情况。_为什么你认为 `cx_Freeze` 比 `PyInstaller` 好?_ (3认同)

uhz*_*uhz 10

我推荐PyInstaller,一个简单的python脚本可以使用以下命令转换为exe:

utils/Makespec.py [--onefile] oldlogs.py
Run Code Online (Sandbox Code Playgroud)

这会创建一个yourprogram.spec文件,这是一个用于构建最终exe的配置.Next命令从配置文件构建exe:

utils/Build.py oldlogs.spec
Run Code Online (Sandbox Code Playgroud)

更多信息可以在这里找到


jot*_*tap 10

由于其他 SO 答案链接到这个问题,值得注意的是PyOxidizer现在还有另一个选项。

它是一个 rust 实用程序,其工作方式与 pyinstaller 的某些方式相同,但是这里详细介绍了一些附加功能,以总结关键功能:

  • 默认情况下,所有包的单个二进制文件能够将模块零复制加载到内存中,而 pyinstaller 在使用onefile模式时将它们提取到临时目录
  • 能够生成静态链接的二进制文件

(它的另一个优点是,如果您在 glibc 版本比目标系统更新的系统上创建二进制文件,pyoxidizer它似乎不会遇到 pyinstaller 可能出现的问题)。GLIBC_X.XX not found

总的来说,pyinstaller 使用起来比 PyOxidizer 简单得多,后者通常需要一些复杂的配置文件,而且它不太 Pythony,因为它是用 Rust 编写的,并且使用了 Python 世界中不太熟悉的配置文件格式,但 PyOxidizer 做了一些更高级的东西,特别是如果您希望生成单个二进制文件(这不是 pyinstaller 的默认设置)。

  • 我还推荐 PyOxidizer,它是跨平台、零复制策略且现代的。有关与其他工具比较的更多详细信息,请参阅 https://pyoxydizer.readthedocs.io/en/stable/pyoxidizer_comparisons.html。 (2认同)