我正在尝试使用cx_freeze冻结使用PySide库的Python 3.3代码以及Windows XP(x86,SP2 / 3)上的所有代码。
python setup.py build
成功运行,但可执行文件会抛出ImportError
:
ImportError:DLL加载失败:此应用程序无法启动,因为应用程序配置不正确。重新安装[...]
在Windows 7 x64(SP1)上,相同的版本运行完全正常。
我使用的版本如下:
两个QT DLL库都被复制到构建文件夹(QtCore.dll
,QtGui.dll
),library-zip包含PySide
文件夹/模块中的.pyc等价物。
即使使用最简单的测试代码(,如果代码也在“实时”Python安装上运行 *),也会出现此问题:
from PySide import QtCore, QtGui
if __name__ == "__main__":
app = QtGui.QApplication("My Application")
win = QtGui.QMainWindow()
win.show()
app.exec_()
使用更新版本的PySide可能会解决问题,但由于 PySide 1.2.0 引入了 cx-freeze 的新问题(该文件)加载错误)我想知道是否有人设法成功冻结了Windows XP股票上的PySide包?
否则将不得不等到PySide 1.2.1发布并保持对该版本的希望。
答案 0 :(得分:2)
原来有一个简单的问题解决方案:来自应用程序使用的另一个模块的DLL丢失;将其复制到冻结EXE旁边的根构建文件夹中可以轻松解决问题。
解决这些问题的最佳(也可能是唯一)攻击方法可能是将所有使用的模块中的DLL逐个复制到构建目录中,直到冻结的构建不再引发错误。我找不到另一种方法,因为stacktrace没有指向加载失败的特定文件。
如果有人遇到类似的问题,我很乐意提供额外的信息。
答案 1 :(得分:0)
我过去遇到过类似的问题,可以通过下载“Microsoft Visual C ++ 2008 Redistributable Package(x86)”来解决它。