如何为PyQt项目创建Windows安装程序

7

我该如何将带有Qt GUI的Python程序转换为.exe文件?

我想制作一个安装文件来发布我的Python源代码。


3
将其打包为一个自包含的可执行文件和将其打包为安装程序是两种不同的方式。你要选择哪一种? - jdi
如果这个问题是关于为你的PyQt项目创建一个安装程序,那么它很可能是一个类似的重复:https://dev59.com/43RB5IYBdhLWcg3wV156 - jdi
2个回答

17

第一部分:"我如何将我的Python程序与Qt GUI转换为.exe文件?"

你可以使用PyInstaller,它支持Python 2.2-2.7,并具有用于包含所有dll和插件的Qt的钩子系统。

你也可以使用以下工具:

  • bbfreeze
  • cxfreeze
  • py2exe(相当古老)
  • esky(上述所有工具的包装器,除了PyInstaller)

基本上,所有这些系统都有一个定义文件来处理和生成二进制软件包。例如,esky有一个setup.py(这是一个distutil文件)来生成软件包:

from esky import bdist_esky
from distutils.core import setup

setup(name="appname",
      version="1.2.3",
      scripts=["appname/script1.py","appname/gui/script2.pyw"],
      options={"bdist_esky":{"includes":["mylib"]}},
     )

你可以运行 "python setup.py bdist_esky" 命令。

对于PyInstaller而言,情况就有些不同了。在控制台中,进入PyInstaller文件夹:

python Makespec.py  [options] script.py

这将生成一个包含打包脚本所有选项的规范文件。您也可以使用编辑器修改此文件。

python Build.py  script.spec

这将分析并构建您的可执行文件(或操作系统二进制等效文件)。

第二部分:“我想为我的Python源代码制作安装文件”

您需要使用NSIS、InnoSetup、BitRock Installer、IzPack或等效工具来生成平台安装程序。因此,您必须取出在第一部分产生的二进制结果并将其打包以进行操作系统分发。几乎所有的安装程序都是为Windows系统设计的。 跨平台:Zero Install、IzPack等... 如果您使用IzPack,则可以支付包含JVM的代价,从而获得跨平台安装程序。


请注意,本答案解决的是如果楼主想要创建一个可以分发的独立可执行文件的问题,而不是创建一个“安装程序”将各种重要数据放置在系统位置的行为。 - jdi
我知道cx_Freeze可以使用bdist_msi命令一步构建简单的MSI安装程序。 - Thomas K
这不是cxfreeze的功能,而是distutils的功能。您可以为Python源代码构建msi安装程序。因此,您将拥有一个安装程序,用于在Python环境中分发您的egg模块。我认为这不是这个问题的情况。 - J_Zar

2
使用Py2Exe是这里最合适的选择。
PY2EXE二进制文件:http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 用法:
1. 创建一个新的安装python文件: from distutils.core import setup import py2exe setup(console=['你的python脚本的绝对路径'])
2. 保存此文件。
3. 进入命令提示符并更改目录到保存setup.py文件的位置。
4. 运行命令: [python <你要转换为exe的python脚本名称> py2exe]
由于我没有10个声誉来发布超过两个链接,所以无法发布图片。如果需要帮助,请留言。

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