我将编写的 PyQt4 应用程序移植到 PySide,但无法为其创建可执行文件。我尝试使用 py2exe、cx_freeze 和 PyInstaller 为 PySide 创建 exe,前两个提供了类似的错误(在构建期间没有提供错误报告,在我尝试运行 exe 之前一切看起来都很好) - PyQt4 版本可通过py2exe。
系统信息
Windows 7、64 位 - 所有软件都是 32 位版本,低于正在使用的软件包:
- Python 2.7.3 通过 Python(x,y) 2.7.3.1
- Qt 4.8.2
- PySide 1.1.2
- NumPy 1.6.2
- Pywin32 218-1
exe转换程序
- PyInstaller 2.0
- cx_Freeze 4.3.1-1
- py2exe 0.6.9
py2exe 错误日志
Traceback (most recent call last):
File "myApp.pyw", line 11, in <module>
File "PySide\QtGui.pyc", line 12, in <module>
File "PySide\QtGui.pyc", line 10, in __load
ImportError: DLL load failed: The specified procedure could not be found.
cx_freeze err.Log
Traceback (most recent call last):
File "C:\Python27\Lib\site-packages\cx_Freeze\initscript\Console.py",
line 27, in <module>
exex code in m.__dict__
File "myApp.pyw", line 11, in <module>
File "ExtensionLoader_PySide_QtGui.py", line 11, in <module>
ImportError: DLL load failed: The specified procedure could not be found.
仅供参考: MyApp.pyw 的 Line11 = 从 PySide 导入 QtGui,QtCore
PyInstaller 错误日志
"The application has failed to start because its side-by-side configuration is
incorrect. Please see the application event log or use the command-line sxstrace.exe
tool for more detail."
我能找到的最接近的是here,但我没有使用那个库,所以我认为它不适用,也不知道如何解决。
PyInstaller 错误上的 SxsTrace 片段
INFO: Reference: Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32 ",version="9.0.21022.8"
我试过的
将“C:\Python27\Lib\site-packages\PySide”放在环境变量路径的开头
将 msvcr90.dll、msvcp90.dll、msvcm90.dll 的副本放入 Python/dll 位置:我相信仅 msvcp90.dll 就允许 py2exe 生成可操作的 PyQt4 exe
使用 pyside-rcc 重新制作所有 qrc 资源文件
将所有 pyside/dll 放入 dist 文件夹(py2exe)
运行 sxstrace 并在 PyInstaller 错误时生成日志文件 - 不确定我在寻找什么我没有看到事件查看器或 msgbox 尚未告诉我的任何内容(只是更多)
重新安装了所有 python/模块、pyqt、pyside、VSE2008 C++ 版、microsoft SDK、microsoft .netframe work 2.0?、Microsoft Visual C++ 2008 Redistributable Package、
移植了软件包不需要但位于目录中的所有正在进行的模块
删除了任何未成功移植/未连接的 WIP 模块
复制(手动不 setup.py)qt.conf(似乎不存在仅用于 pyside pyqt4?)和插件到 dist 文件夹