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

Python 在Windows中冻结pyqt4应用程序的解决方案?,python,windows,pyqt,pyqt4,Python,Windows,Pyqt,Pyqt4,是否有一种可行且经验证的方法可以在windows中冻结pyqt4应用程序?我听说py2exe存在一些问题。我在工作时将py2exe用于PyQt4项目,但最终切换到 py2exe在大多数情况下工作得很好。我记得必须手动告诉它在我的setup.py文件中包括sip库以及其他一些库,具体取决于程序。在我看来,PyInstaller似乎能更好地处理这个问题,尽管我经常发现自己从最终文件夹的qt4_plugins文件夹中删除了DLL文件,它已经决定包含我实际上并不需要的文件。例如,当我根本不使用JPEG文

是否有一种可行且经验证的方法可以在windows中冻结pyqt4应用程序?我听说py2exe存在一些问题。

我在工作时将py2exe用于PyQt4项目,但最终切换到

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

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

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

python -O c:\python27\pyinstaller-1.5\build.py "%~f1"
因此,我可以通过在projects.spec文件上运行“pybuild projectname.spec”从命令行轻松构建项目。我还将其添加到注册表的.spec文件条目中,以便可以从资源管理器中快速冻结项目:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.SPEC\shell\Freeze\command]
@="C:\\Python27\\Scripts\\pybuild.bat \"%1\""
但是,我从py2exe切换的主要原因是一些用户抱怨冻结的应用程序无法在他们的机器上运行。我不断地遇到错误:

应用程序无法启动 因为应用程序配置 这是不正确的。重新安装 应用程序可能会修复该问题

但仅在一些机器上,通常运行Windows XP。我发现让用户安装微软Visual C++ 2008运行时使问题消失了。 使用PyInstaller创建的冻结应用没有此问题,因为它似乎将这些运行时打包到输出文件夹中。如果路径中的某个位置可用,它也会压缩DLL和PYD文件,从而生成较小的输出文件夹


长话短说-py2exe和PyInstaller都可以正常工作。我在使用py2exe时遇到了一些问题,尽管如果您仔细研究,可能会有一些解决方法,但我发现PyInstaller在没有任何修改的情况下工作得更好。我已经从PyInstaller分发了冻结的应用程序,这些应用程序使用PyQt4中的图像和数据库库以及其他一些第三方库,并且还没有遇到任何问题。

我在工作中使用py2exe进行PyQt4项目,但最终切换到了

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

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

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

python -O c:\python27\pyinstaller-1.5\build.py "%~f1"
因此,我可以通过在projects.spec文件上运行“pybuild projectname.spec”从命令行轻松构建项目。我还将其添加到注册表的.spec文件条目中,以便可以从资源管理器中快速冻结项目:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.SPEC\shell\Freeze\command]
@="C:\\Python27\\Scripts\\pybuild.bat \"%1\""
但是,我从py2exe切换的主要原因是一些用户抱怨冻结的应用程序无法在他们的机器上运行。我不断地遇到错误:

应用程序无法启动 因为应用程序配置 这是不正确的。重新安装 应用程序可能会修复该问题

但仅在一些机器上,通常运行Windows XP。我发现让用户安装微软Visual C++ 2008运行时使问题消失了。 使用PyInstaller创建的冻结应用没有此问题,因为它似乎将这些运行时打包到输出文件夹中。如果路径中的某个位置可用,它也会压缩DLL和PYD文件,从而生成较小的输出文件夹


长话短说-py2exe和PyInstaller都可以正常工作。我在使用py2exe时遇到了一些问题,尽管如果您仔细研究,可能会有一些解决方法,但我发现PyInstaller在没有任何修改的情况下工作得更好。我已经发布了PyInstaller中的冻结应用程序,这些应用程序使用PyQt4中的图像和数据库库以及其他一些第三方库,并且还没有遇到任何问题。

在任何关于这些问题的报告之前,谷歌有一个包含各种问题解决方案的页面。谷歌在任何关于这些问题的报告之前都有一个页面,上面有各种问题的解决方案。