首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows中冻结pyqt4应用程序的解决方案?

在Windows中冻结pyqt4应用程序的解决方案?
EN

Stack Overflow用户
提问于 2011-03-05 15:52:03
回答 1查看 619关注 0票数 0

有没有一种可行且行之有效的方法来冻结windows中的pyqt4应用程序?我听说py2exe有一些问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-07 00:30:36

我在工作中的一个PyQt4项目中使用了py2exe,但最终切换到了PyInstaller

py2exe在很大程度上工作得很好。我记得我必须手动告诉它在我的setup.py文件中包含sip库,以及其他一些依赖于程序的库。在我看来,PyInstaller似乎能更好地处理这一点,尽管我经常发现自己从最终文件夹的qt4_plugins文件夹中删除了一些我实际上并不需要的DLL文件。例如,当我根本不使用JPEG文件时,使用qt4_plugins\imageformats\qjpeg4.dll。这不会以任何方式阻碍冻结的应用程序,它只会增加文件大小。

PyInstaller的manual也很不错,有了它的“入门”部分,你应该很快就能把东西设置好。它很简单,只需为每个项目创建一个.spec文件,该文件是自动生成的,但也是一个普通的Python文件,因此您可以选择对其进行调整或添加任何额外任务,例如代码签名,或者使用NSIS创建一个setup.exe程序。

我的路径中有一个名为pybuild.bat的windows批处理文件,其内容包括:

代码语言:javascript
复制
python -O c:\python27\pyinstaller-1.5\build.py "%~f1"

这样我就可以通过在项目.spec文件上运行'pybuild projectname.spec‘来轻松地从命令行构建项目。我还将以下内容添加到.spec文件的注册表条目中,以便可以在资源管理器中快速冻结项目:

代码语言:javascript
复制
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.SPEC\shell\Freeze\command]
@="C:\\Python27\\Scripts\\pybuild.bat \"%1\""

不过,我改用py2exe的主要原因是,一些用户抱怨说,冻结的应用程序无法在他们的机器上运行。我一直在犯这个错误:

应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。

但仅限于一些通常运行Windows XP的计算机上。我发现让用户安装Microsoft Visual C++ 2008Runtime可以解决这个问题。

使用PyInstaller创建的冻结应用程序没有这个问题,因为它似乎将这些运行时打包到输出文件夹中。如果UPX在你的路径中的某个地方可用,它也会压缩你的DLL和PYD文件,导致输出文件夹变小。

长话短说- py2exe和PyInstaller都工作得很好。我在使用py2exe时遇到了一些问题,虽然可能有解决这些问题的办法,但如果你四处寻找,我发现PyInstaller在没有任何修改的情况下工作得更好。我已经分发了来自PyInstaller的冻结应用程序,这些应用程序使用了PyQt4的图像和数据库库以及其他一些第三方库,目前还没有遇到任何问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5202483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档