2011-03-05 86 views
0

是否有一种可行且经过验证的方法来在Windows中冻结pyqt4应用程序?我听说py2exe有一些问题。在Windows中冻结pyqt4应用程序的解决方案?

+1

在任何有关这些问题的报告之前,Google都有一个包含各种问题解决方案的页面。 http://www.py2exe.org/index.cgi/Py2exeAndPyQt – delnan 2011-03-05 08:44:06

回答

4

我在工作中使用py2exe作为PyQt4项目,但最终切换到PyInstaller

py2exe大部分工作很好。我记得不得不手动告诉它根据程序将sip库包含在我的setup.py文件中。 PyInstaller似乎在我看来处理得更好,尽管我经常发现我自己从最终文件夹的qt4_plugins文件夹中删除了 DLL文件,它已决定包含我实际上不需要的文件夹。例如,当我根本不使用JPEG文件时,qt4_plugins \ imageformats \ qjpeg4.dll。这不会以任何方式阻止冻结的应用程序,它只会增加文件大小。

PyInstaller的manual也相当不错,而且它的'入门'部分你应该很快就能够完成设置。它就像为每个项目创建一个.spec文件一样简单,该文件是自动生成的,但也是一个普通的Python文件,因此您可以选择调整它或添加任何额外的任务,如代码签名或可能使用NSIS创建setup.exe程序。

我在我的道路命名为pybuild.bat Windows批处理文件是谁的内容包括:

python -O c:\python27\pyinstaller-1.5\build.py "%~f1" 

,这样我可以很容易地通过运行“pybuild projectname.spec”建立在命令行项目上项目.spec文件。我还添加了这代表.spec文件的注册表条目,这样我可以从资源管理器中迅速冻结一个项目:

Windows Registry Editor Version 5.00 

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

我从py2exe虽然切换主要原因是,一些用户抱怨说,冷冻应用不会在他们的机器上运行。我不断遇到错误:

The application has failed to start because the application configuration is incorrect. Reinstalling the application may fix the problem.

但只在一些机器上,通常运行Windows XP。我发现让用户安装Microsoft Visual C++ 2008 Runtimes使问题消失。

使用PyInstaller创建的冷冻应用程序没有这个问题,因为它似乎将这些运行时打包到输出文件夹中。如果UPX在您的路径中某处可用,它将压缩您的DLL和PYD文件,从而产生较小的输出文件夹。

长话短说 - py2exe和PyInstaller都能正常工作。我在使用py2exe时遇到了一些问题,尽管如果你在四处寻找,可能会有解决方法,我发现PyInstaller在没有任何修改的情况下运行得更好。我已经发布了来自PyInstaller的冷冻应用程序,它们利用来自PyQt4以及其他一些第三方库的图像和数据库库,并且还没有遇到任何问题。

+0

+1我发现pyinstaller令人难以置信的简单工作。 – Whatang 2011-03-06 22:49:24