【问题标题】:How can I convert a .py to .exe for Python?如何将 .py 转换为 Python 的 .exe?
【发布时间】:2020-11-06 18:13:27
【问题描述】:

我正在尝试将一个相当简单的 Python 程序转换为可执行文件,但找不到我要找的东西,所以我有几个问题(我正在运行 Python 3.6):

目前我发现的方法如下

  1. 下载旧版本的 Python 并使用pyinstaller/py2exe
  2. 在 Python 3.6 中设置一个虚拟环境,让我能够完成 1。
  3. 下载 Python 到 C++ 转换器并使用它。

这是我尝试过的/遇到的问题。

  • 我在需要下载之前安装了pyinstaller(pypi-something),所以它不起作用。下载必备文件后,pyinstaller 仍然无法识别。
  • 如果我在 Python 2.7 中设置 virtualenv,我真的需要安装 Python 2.7 吗?
  • 同样,我看到的唯一 python 到 C++ 转换器只能在 Python 3.5 之前工作 - 如果尝试这样做,我是否需要下载并使用这个版本?

【问题讨论】:

标签: python python-3.x exe py2exe python-3.6


【解决方案1】:

PyInstaller 支持 Python 3.6。

在您的 Python 文件夹中打开一个 cmd 窗口(打开一个命令窗口并使用 cd 或按住 shift 键,在 Windows 资源管理器上右键单击它并选择“在此处打开命令窗口”)。然后直接输入

pip install pyinstaller

就是这样。

最简单的使用方法是在命令提示符下输入

pyinstaller file_name.py

有关如何使用它的更多详细信息,请查看this question

【讨论】:

  • 刚刚用 python 3.7.0 测试过。虽然有很多警告,但编译成功并在 Windows 10 上运行
  • 我用python 3.5.0编译了一个程序,没有任何警告或错误,它按预期运行
  • 有人知道 Pyinstaller 中什么重要吗?在 Windows 10 上构建的 exe 可以在 Windows 8 中运行吗?还是 Windows 10 32 位构建可以在 Windows 10 64 位系统中工作?
  • @Peter 我遇到了以下错误:AttributeError: Module 'PyQt5' has no attribute 'version'
  • 像魅力一样运行和创建 exe,但在分发方面,防病毒软件会带来很多麻烦。现在我正在努力寻找替代方法来阻止那些仅针对 hello world 代码的防病毒警告
【解决方案2】:

我不能告诉你什么是最好的,但我过去成功使用的一个工具是cx_Freeze。他们最近(2017 年 1 月 7 日)更新到版本 5.0.1,它支持 Python 3.6。

这是pypi https://pypi.python.org/pypi/cx_Freeze

文档显示有不止一种方法可以做到这一点,具体取决于您的需要。 http://cx-freeze.readthedocs.io/en/latest/overview.html

我还没有尝试过,所以我将指向一篇讨论了简单方法的帖子。不过,有些事情可能改变了,也可能没有改变。

How do I use cx_freeze?

【讨论】:

  • 值得一提,cxFreeze 不做单文件可执行文件。
【解决方案3】:

在 Python 3.6 中将 .py 转换为 .exe 的步骤

  1. 安装Python 3.6
  2. 安装 cx_Freeze,(打开命令提示符并输入 pip install cx_Freeze
  3. 安装 idna,(打开命令提示符并输入 pip install idna
  4. 编写一个名为myfirstprog.py.py 程序。
  5. 在脚本的当前目录中创建一个名为 setup.py 的新 python 文件。
  6. setup.py文件中,复制下面的代码并保存。
  7. 按住 shift 右键单击​​同一目录,这样您就可以打开命令提示符窗口。
  8. 在提示符中输入python setup.py build
  9. 如果您的脚本没有错误,那么创建应用程序就没有问题。
  10. 检查新创建的文件夹build。它里面有另一个文件夹。在该文件夹中,您可以找到您的应用程序。运行。让自己快乐。

在我的blog 中查看原始脚本。

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

编辑:

  • 确保您应该使用 步骤 4 中创建的 .pyextension 文件名,而不是 myfirstprog.py
  • 您应该将.py 中的每个imported 包都包含在packages 列表中(例如:packages = ["idna", "os","sys"]
  • setup.py 文件中的 any name, any number, any description 不应该保持不变,您应该相应地更改它(例如:name = "&lt;first_ever&gt;", version = "0.11", description = ''
  • 必须在开始第 8 步之前安装 imported 软件包。

【讨论】:

  • 有没有办法让它“独立”可执行?如果我按照您在文章中的建议进行操作,我最终会得到文件夹 exe.win.32-3.6。其中充满了支持性文件和目录(如“collections/”、“email”等)。一个简单的打印('hello')太可怕了。我想制作一个单独的可执行文件,该文件将按原样在另一台计算机上运行,​​而不需要其他文件。有没有构建选项?
  • @FanaticD Python 不是你最好的选择。 Cython(开始工作的噩梦)或 Nuitka 将是您最好的选择。但让这些工作本身就是一项成就。
  • 这可以在 Python 3.5.3 中使用吗? (Debian 9 Stretch 上的最后一个稳定版本)。
  • 如何导入from sklearn.externals import joblib?如编辑中所述,第 2 步。
【解决方案4】:

有一个名为 auto-py-to-exe on GitHub 的开源项目。实际上它也只是在内部使用 PyInstaller,但由于它有一个简单的 GUI 来控制 PyInstaller,它可能是一个舒适的选择。与其他解决方案相比,它还可以输出独立文件。他们还提供a video 展示如何设置它。

界面:

输出:

或者直接使用pyinstaller:

pip install pyinstaller
pyinstaller filename

【讨论】:

  • 你应该提到它需要 MVC++。错误:需要 Microsoft Visual C++ 14.0。
  • 我没有找到任何价值,因为它是基于 pyinstaller 构建的,如果你在 pyinstaller 中遇到错误,你也会在这里找到它!
【解决方案5】:

现在您可以使用 PyInstaller 对其进行转换。它甚至适用于 Python 3。

步骤:

  1. 启动你的电脑
  2. 打开命令提示符
  3. 输入命令pip install pyinstaller
  4. 安装完成后,使用“cd”命令进入工作目录。
  5. 运行命令pyinstaller &lt;filename&gt;

【讨论】:

  • 因为它不适用于 OP 专门编写的他正在使用的 Python 3.6。
  • Pyinstaller 现在应该可以工作了。如果没有,请在 cmets 中告诉我
  • 在第 5 步中,应该是 pyinstaller 而不是 pyinstaller
  • 我的主要 python 文件依赖于自定义 python 文件。如何在创建 exe 时包含我的 custom.py?
  • @roney 很抱歉回复得太晚了,但我的 SO 帐户被锁定了,但答案就在这里。或者,更准确地说,这里是:pyinstaller.readthedocs.io/en/stable/spec-files.html。它太大了,无法在评论中写。
【解决方案6】:

我一直在将 Nuitka 和 PyInstaller 与我的包 PySimpleGUI 一起使用。

努伊特卡 让 tkinter 与 Nuikta 一起编译存在问题。项目贡献者之一开发了一个脚本来解决这个问题。

如果您不使用 tkinter,它可能对您“有效”。如果您使用 tkinter,请这样说,我会尝试发布脚本和说明。

PyInstaller 我正在运行 3.6,PyInstaller 运行良好! 我用来创建我的 exe 文件的命令是:

pyinstaller -wF myfile.py

-wF 将创建一个单独的 EXE 文件。因为我所有的程序都有一个 GUI,我不想显示命令窗口,所以 -w 选项将隐藏命令窗口。

这类似于 看起来一个用 Python 编写的运行 Winforms 程序。

[2019 年 7 月 20 日更新]

有使用 PyInstaller 的基于 PySimpleGUI GUI 的解决方案。它使用 PySimpleGUI。叫pysimplegui-exemaker,可以pip安装。

pip install PySimpleGUI-exemaker

安装后运行:

python -m pysimplegui-exemaker.pysimplegui-exemaker

【讨论】:

    【解决方案7】:

    最好和最简单的方法肯定是 auto-py-to-exe,我已经给出了下面的所有步骤和危险信号,您只需 5 分钟即可获得最终的 .exe文件,因为您无需学习任何内容即可使用它。

    1.) 我猜在某些设备上它可能不适用于 python 3.9。

    2.) 在安装 python 时,如果您选择了“将 python 3.x 添加到路径”,请从开始菜单打开命令提示符,您必须输入 pip install auto-py-to-exe 来安装它。您必须在命令提示符下按 enter 才能获得您正在输入的行的结果。

    3.) 安装后,在命令提示符下,您只需键入 auto-py-to-exe 即可打开它。它将打开一个新窗口。第一次可能需要一分钟。此外,关闭命令提示符也会关闭 auto-py-to-exe,所以在准备好 .exe 文件之前不要关闭它。

    4.) 将有用于制作 .exe 文件所需的一切按钮,并在下面共享它的屏幕截图。此外,对于图标,您需要一个 .ico 文件而不是图像,因此要转换它,您可以使用 https://convertio.co/

    5.) 如果您的脚本使用外部文件,您可以通过 auto-py-to-exe 添加它们,并且在脚本中,您必须对其路径进行一些更改。首先,如果还没有写,你必须写import sys,其次,你必须为例如location=getattr(sys,"_MEIPASS",".")+"/"创建一个变量,第三,如果exam​​ple.png不在任何文件夹中,它的位置将是location+"/example.png"

    6.) 如果它显示任何错误,可能是因为名为 setuptools 的模块不是最新版本。要将其升级到最新版本,在命令提示符下,您必须编写 pip install --upgrade setuptools。此外,在脚本中,写 import setuptools 可能会有所帮助。如果 setuptools 的版本超过 50.0.0 那么一切都应该没问题。

    7.) 完成所有这些步骤后,在 auto-py-to-exe 中,转换完成后,.exe 文件将位于您选择的文件夹中(默认情况下,它是 'c:/用户/名称/输出'),或者如果您有一个,它会被您的防病毒软件删除。每个防病毒软件都有不同的方法来恢复文件,所以如果您不知道,请尝试一下。

    以下是如何使用 auto-py-to-exe 的简单 GUI 制作 .exe 文件。

    【讨论】:

    • 如果我回答这个问题迟了,我很抱歉。当被问到这个问题时,我不知道 python 或这个网站。但是,这种方法非常简单快捷,每次都对我有用,您不需要任何知识即可使用它。
    【解决方案8】:

    PyOxidizer 可以是这里的一个选项。它在 Github 上很受欢迎,有 3.3k 星。它的文档说

    PyOxidizer 能够生成单个文件的可执行文件——Python 的副本及其所有依赖项静态链接,所有资源(如 .pyc 文件)都嵌入在可执行文件中。您可以将单个可执行文件复制到另一台机器并运行其中包含的 Python 应用程序。它只是工作。

    虽然我不确定它是否能够生成 .exe 文件 PyOxidizer 肯定有助于打包和分发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-22
      • 2022-07-24
      • 2018-02-13
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多