PySide(1.1.2),cx_freeze,WinXP,Python 3.3:ImportError:DLL加载失败

时间:2013-07-31 03:47:32

标签: python pyside python-3.3 cx-freeze

我正在尝试使用cx_freeze冻结使用PySide库的Python 3.3代码以及Windows XP(x86,SP2 / 3)上的所有代码。

python setup.py build成功运行,但可执行文件会抛出ImportError

  

ImportError:DLL加载失败:此应用程序无法启动,因为应用程序配置不正确。重新安装[...]

在Windows 7 x64(SP1)上,相同的版本运行完全正常。

我使用的版本如下:

  • win32上的Python 3.3.0(v3.3.0:bd8afb90ebf2,2012年9月29日,10:55:48)[MSC v.1600 32位(英特尔)]
  • cx_Freeze-4.3.1.win32-py3.3
  • PySide-1.1.2.win32-py3.3

两个QT DLL库都被复制到构建文件夹(QtCore.dllQtGui.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发布并保持对该版本的希望。

  • 请参阅我的评论:我不确定这是否真的发生在我的测试中,实际上是出于同样的原因或其他原因,例如导致冻结版本中的问题的实际模块没有正确安装..

2 个答案:

答案 0 :(得分:2)

原来有一个简单的问题解决方案:来自应用程序使用的另一个模块的DLL丢失;将其复制到冻结EXE旁边的根构建文件夹中可以轻松解决问题。

解决这些问题的最佳(也可能是唯一)攻击方法可能是将所有使用的模块中的DLL逐个复制到构建目录中,直到冻结的构建不再引发错误。我找不到另一种方法,因为stacktrace没有指向加载失败的特定文件。

如果有人遇到类似的问题,我很乐意提供额外的信息。

答案 1 :(得分:0)

我过去遇到过类似的问题,可以通过下载“Microsoft Visual C ++ 2008 Redistributable Package(x86)”来解决它。