【问题标题】:Can I somehow "compile" a python script to work on PC without Python installed?我可以以某种方式“编译”一个 python 脚本以在没有安装 Python 的情况下在 PC 上工作吗?
【发布时间】:2011-05-08 16:28:10
【问题描述】:

所以我有一个 Python 脚本:

myscript.py

我是这样执行的:

python D:\myscript.py

但是,我必须安装 Python 并将其包含在 PATH 环境变量中才能正常工作。

是否有可能以某种方式将 Python 可执行文件与 Python 脚本“捆绑”在一起,以便其他人能够在没有 Python 的情况下在他们的 PC 上运行它?

如果它只能在 Windows 中工作就可以了。

编辑:

尝试compile.py 后,我收到此错误:

Traceback (most recent call last):
  File "D:\stuff\compile.py", line 4, in <module>
    import py2exe
ImportError: No module named py2exe

【问题讨论】:

  • 要解决导入错误,您需要获得正确版本的py2exe(32 位或 64 位,具体取决于您的 python 设置),安装它并检查安装它的文件夹是否包含在内在sys.path

标签: python compilation


【解决方案1】:

你想要py2exe这样的东西。

【讨论】:

    【解决方案2】:

    有多种解决方案,例如py2execx-freeze 或(仅适用于 Mac OS X)py2app

    【讨论】:

      【解决方案3】:

      Here 是它们的列表。

      【讨论】:

        【解决方案4】:

        这是一种方法(对于 Windows,使用 py2exe)。

        首先,在您的 Windows 机器上安装 py2exe

        然后创建一个名为compile.py的python脚本,像这样:

        import sys
        from distutils.core import setup
        import py2exe
        
        entry_point = sys.argv[1]
        sys.argv.pop()
        sys.argv.append('py2exe')
        sys.argv.append('-q')
        
        opts = {
            'py2exe': {
                'compressed': 1,
                'optimize': 2,
                'bundle_files': 1
            }
        }
        
        setup(console=[entry_point], options=opts, zipfile=None)
        

        要将您的 Python 脚本编译为 Windows 可执行文件,请使用您的程序作为参数运行此脚本:

        $ python compile.py myscript.py
        

        它会输出一个二进制可执行文件 (EXE),里面编译了 Python 解释器。然后你就可以分发这个可执行文件了。

        【讨论】:

        • 谢谢。我收到一个错误。检查我更新的答案。
        • 是的。我已经从 Sourceforge 下载并安装了 py2exe-0.6.9.win64-py2.5.amd64。
        • 转到 python 提示符并尝试:import py2exe
        • 还要验证您安装了正确的版本(您运行的是 64 位 Python 2.5 吗?)
        • 好的,编译好了。但。当我运行 exe 时出现此错误: NameError: name 'file' is not defined。当我从 cmd 运行原始 python 脚本时不会发生这种情况。
        【解决方案5】:

        PyInstaller 对我来说效果很好,由于使用了 upx,它生成了相当小的包。它的依赖检测在当时也比 py2exe 好。它似乎没有太多最新的开发,但可能不适用于 3.x。

        存储库中的源是比 1.4 包更好的起点。

        另请参阅有关使用 Python 2.6+ 的 wiki 页面。

        来自功能列表:

        • 将 Python 程序打包成标准可执行文件,可在未安装 Python 的计算机上运行。
        • 多平台:适用于 Windows(32 位和 64 位)、Linux(32 位和 64 位)和 Mac OS X(目前仅 32 位,请参阅 MacOsCompatibility)。
        • 多版本:适用于从 1.5 到 2.7 的任何 Python 版本。注意:如果您在 Windows 上使用 Python 2.6+,请参阅 Python26Win。
        • 柔性包装方式:
        • 单个目录:构建一个包含可执行文件以及程序使用的所有外部二进制模块(.dll、.pyd、.so)的目录。
        • 单个文件:构建单个可执行文件,完全独立,无需任何外部依赖即可运行。
        • 自定义:您可以通过 Python 中的简单脚本文件自动化 PyInstaller 以执行您想要的任何打包模式。
        • 对许多第 3 包(用于隐藏导入、外部数据文件等)的显式智能支持,使它们能够与开箱即用的 PyInstaller 一起使用(请参阅 SupportedPackages)。
        • 完整的单文件 EGG 支持:自动检查所需的 .egg 文件的依赖关系并进行捆绑,并且在运行时也支持所有 Egg 特定的功能(入口点等)。
        • 部分目录 EGG 支持:自动检查所需的 .egg 目录的依赖关系并进行捆绑,但 egg 特定的功能在运行时将不起作用。
        • 自动支持通过 ctypes 使用的二进制库(有关详细信息,请参阅 CtypesDependencySupport)。
        • 支持通过著名的 UPX 压缩器进行自动二进制打包。
        • 可选的控制台模式(在运行时查看标准输出和标准错误)。
        • Windows 特定功能:
        • 支持代码签名可执行文件。
        • 对 CRT 的全自动支持:无需手动分发 MSVCR*.DLL、重新分发安装程序、清单或其他任何内容;真正适用于任何地方的单一文件应用程序!
        • 可选择的可执行图标。
        • 完全可配置的版本资源部分和可执行文件中的清单。
        • 支持构建 COM 服务器。
        • Mac 特有的功能:
        • 对捆绑包的初步支持(请参阅 MacOsCompatibility)

        【讨论】:

        • 我发现 PyInstaller 更适合最新版本的 Python 和带有 PyQt GUI 和各种其他库的脚本。只需确保从其 SVN 获取最新代码(其开发人员不太喜欢更新的正式版本)
        • pyinstaller 在 py2exe 上浪费了大量时间后立即为我工作。
        猜你喜欢
        • 1970-01-01
        • 2011-07-29
        • 2016-11-26
        • 2020-01-01
        • 2012-11-25
        • 1970-01-01
        • 2020-09-23
        • 2019-10-01
        • 1970-01-01
        相关资源
        最近更新 更多