将简单的Python脚本转换为Windows可执行文件的过程

78
我编写了一个脚本,可帮助Windows用户解决日常问题。我只想简单地发送 .exe 文件给她,而不需要让她安装Python、dll文件或处理任何其他文件。
我阅读了很多关于将Python脚本编译为可执行文件的Stackoverflow条目。由于选项很多,所以我有些困惑,其中一些似乎过时(自2008年以来没有更新),而且在花费了几个小时之后,没有一个选项足够简单,使我现在不需要提出这个问题。
我希望有一个更好、更现代化的方法来实现这个目标。
我研究了以下内容: 但要么无法让它们正常工作,要么无法理解如何获得所需的结果。最接近成功的是使用 py2exe,但它仍然给了我 MSVCR71.dll。
由于我也无法遵循一些需要先了解如何使用 py2exe 或其他工具的微调答案,因此我希望能得到逐步的答案。
我正在使用Python 2.5,因为其中一个模块仅适用于该版本。

1
大部分时间你可以忽略MSVCR dll,因为我不会在应用程序中分发它,并且也没有听说过任何错误(关键是可能已经发生了,只是我还没有得到报告:))。 - Steven Sproat
8个回答

33

如果你使用--onefile选项,PyInstaller将创建一个单文件可执行文件(虽然它实际上是提取然后运行自身)。

这里有一个简单的PyInstaller教程(链接)。如果你对使用它有任何疑问,请发布问题...


最近情况好多了。你只需要输入 pip install pyinstaller 来安装它,然后使用 pyinstaller -w yourpythonscript.py 将其编译为exe文件即可。 - G_Style

13

使用py2exe时,在你的setup.py文件中加入以下内容:

from distutils.core import setup
import py2exe, sys, os

sys.argv.append('py2exe')

setup(
    options = {'py2exe': {'bundle_files': 1}},
    windows = [{'script': "YourScript.py"}],
    zipfile = None,
)

那么你可以通过命令提示符/Idle来运行它,对我而言两种方法都有效。希望能帮到你。


13

我建议前往http://sourceforge.net/projects/py2exe/files/latest/download?source=files下载py2exe。然后创建一个名为setup.py的Python文件,在其中输入以下内容:

from distutils.core import setup
import py2exe
setup(console=['nameoffile.py'])

保存在您的用户文件夹中,同时将要转换的文件保存在该文件夹中。

运行Windows命令提示符,输入 setup.py install py2exe

它应该会打印出许多行代码...

接下来,打开dist文件夹。

运行exe文件。

如果程序需要某些文件才能运行,请将它们移动到该文件夹中。

复制/发送dist文件夹给其他人。

可选:更改dist文件夹的名称。

希望它有效!:)


这太棒了,我将我的脚本组织在几个相互使用的文件夹中,但是这种方法捕捉到了所有依赖项。我尝试过pyinstaller-2.0,但它没有捕捉到依赖项,导致生成的可执行文件打印与导入依赖项相关的错误。 - Aravind
我尝试使用这种方法,但它没有起作用。当我在命令提示符中输入信息时,它只是运行了我的脚本。 - kflaw

9
我会跟随@Nicholas的建议,推荐使用PyInstaller(使用--onefile标志),但请注意:不要使用“最新版本”,即PyInstaller 1.3 -- 它已经有几年的历史了。使用“预发布版”1.4,可以在这里下载 -- 或者更好地从svn仓库中获取代码 -- 安装SVN并运行svn co http://svn.pyinstaller.org/trunk pyinstaller
正如@Nicholas所暗示的,动态库不能从与可执行文件相同的文件中运行--但幸运的是它们可以与其余所有内容一起打包在一个“自解压”可执行文件中,该文件将根据需要将其自身解压缩到某个临时目录中;PyInstaller在这方面做得很好(以及许多其他事情--py2exe更受欢迎,但在我看来,pyinstaller在所有其他方面都更可取)。

我查看了您在此处提供的链接,但它们已不再可用。PyInstaller是否可以处理多个文件并且也支持Python 2.7 - Sam Al-Ghammari
2
PyInstaller现在已经迁移到GitHub上,目前版本为2.1,并支持Python 2.7(以及其他版本)。当然,“它可以处理多个文件”(作为输入),但整个重点是生成单个文件作为输出。请参见https://github.com/pyinstaller/pyinstaller/wiki及其链接。 - Alex Martelli

6

1) 从这里下载适合你的Python版本的py2exe。

2) 在要转换的脚本所在的文件夹中创建一个名为“setup.py”的文件,并添加以下代码:

from distutils.core import setup
import py2exe
setup(console=['myscript.py']) #change 'myscript' to your script

3) 打开命令提示符,导航到该文件夹,并键入以下内容:

python setup.py py2exe

4) 这将在脚本所在的同一文件夹中生成一个名为“dist”的文件夹,其中包含.exe文件。


2
你能否删除这个答案?因为它是Bob在两年前发布的答案的重复。 - sricks

2

1
如果您使用IronPython(我正在其中开发商业软件),请注意它需要.NET Framework 2.0。 - DCC

1
您可以使用NSIS(Nullsoft scriptable install system)从Python脚本创建可执行文件。按照以下步骤将您的Python文件转换为可执行文件:
  • 下载并安装NSIS到您的系统。

  • 将您想要导出为可执行文件的文件夹压缩成.zip文件。

  • 启动NSIS并选择基于ZIP文件的安装程序。找到并提供您压缩文件的路径。

  • 提供您的安装程序名称默认文件夹路径,然后单击生成以生成您的exe文件。

  • 完成后,您可以单击测试来测试可执行文件,或者单击关闭来完成该过程。

  • 生成的可执行文件可以安装在系统上,并且可以分发以使用此应用程序,而无需担心安装所需的Python及其软件包。

如需视频教程,请访问: 如何将 Python 文件转换为 .EXE


-4
您可以通过以下步骤为您的EXE文件创建安装程序:
1. 按下Win键 + R
2. 在运行窗口中输入“iexpress”(不带引号)
3. 完成创建安装程序的向导
4. 分发已完成的EXE文件即可。

4
这是不正确的。 - sricks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接