如何将PyQt脚本(.py)编译为Windows(.exe)和/或linux的单个独立可执行文件?

时间:2011-05-04 19:32:08

标签: python qt4 compilation executable pyqt4

我开始摆弄PyQt,并从pyqt白皮书示例应用程序(pastebin)制作了一个“漂亮”的脚本

它在Windows和Linux中完美运行(两者都安装了qt环境)。

现在我的问题是:因为我正在尝试使用Qt,因为它是编译的(至少是纯旧的基于C ++的Qt),我如何编译一些.exe文件在Windows上运行它,或者是Linux的独立可执行文件。

关键是我希望编译程序,因为速度和可移植性,而不是从源解释,这需要在任何机器上进行先前的设置。例如,其中一个目标是通过电子邮件向不是程序员的同事发送小型gui脚本。

6 个答案:

答案 0 :(得分:38)

如果您想完全创建一个独立的可执行文件,可以试试这个:http://www.pyinstaller.org/。我觉得创建一个独立的可执行文件比cx_freeze或py2exe更好(根据我的经验)。并且易于使用(网站提供完整文档)。

更新: 作为来自@SoursopTree和@LectureMaker的最新信息,它现在支持python版本3.3 - 3.6。

更新:如果要创建完全独立的.exe,则传递 - onefile 参数。例如:

pyinstaller.exe --onefile --windowed app.py

更新:图书馆作者声称您可以创建跨平台桌面应用程序的另一个有趣的库。值得尝试https://build-system.fman.io/

答案 1 :(得分:13)

花了好几周时间并尝试了所有替代方案 - PyInstaller,py2exe,cx_freeze,...... - 我创建了自己的库:https://build-system.fman.io/。它基于PyInstaller,但解决了许多常见的痛点。它还允许您在Windows,Mac和Linux上创建本机安装程序。

答案 2 :(得分:4)

您可能需要查看cx_freeze。它声称创建了“跨平台的可执行文件,应该可以在Python本身可以使用的任何平台上运行。”

我在探索使用PyQt的moneyGuru包时遇到过它。我将moneyguru.exe文件下载到我的Windows XP系统,执行它,它在Python 3.2上工作正常。

您可以从here克隆hg repo以查看它是如何完成的。

答案 3 :(得分:1)

  

因为我正在尝试使用Qt,因为它已经编译了

你使用Python打败了这个好处。虽然其他答案介绍了分发Python代码的选项,而不需要用户自己安装Python,但Python本来是一种解释型语言,因此每个选项都有缺点(例如速度,程序大小,兼容性,等等...)。他们可能会或可能不会对你造成交易。

您还有两个选择:

  1. 拥抱Python的解释本质:让人们通过安装Python和依赖项共享您的程序。但是,您可以显着简化此过程。防爆。在Linux上,使用包管理器。
  2. 用C ++编写程序。这样做可以让您真正编译单个本机可执行文件。不幸的是,这意味着放弃Python,但是有理由说人们仍然用不太漂亮的语言编写代码,比如C ++,听起来你可能会遇到其中的一些。

答案 4 :(得分:0)

有一个名为Py2EXE的模块,它将完全按照您的意愿执行。它会将脚本转换为.exe文件以在Windows上运行。我不确定linux,但我打赌那里有一个模块。 py2exe.com

答案 5 :(得分:0)

我正在使用pyinstaller

pip install pyinstaller

我不知道,但是pyinstaller不会附加sip.pyd。因此,您需要一个 PyQt5 \ sip.pyd 。我建议使用漂亮的Windows样式 qwindowvistastyle.dll

build.cmd 文件设置为:

pyinstaller --onefile --clean ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\sip.pyd;PyQt5" ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\Qt\plugins\styles\qwindowsvistastyle.dll;PyQt5\Qt\plugins\styles" ^
    .\main.py

^-命令文件(.cmd,.bat)中的新行