1

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

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

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

相同的构建在 Windows 7 x64 (SP1) 上运行得非常好。

我使用的版本如下:

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

两个 QT DLL 库都被复制到构建文件夹 ( QtCore.dll, ),library-zip 在文件夹/模块QtGui.dll中包含两个 .pyc 等效项。PySide

即使使用最简单的测试代码也会出现此问题(并且如果代码也在“实时”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 发布并保持我对该版本的希望。

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

2 回答 2

2

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

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

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

于 2013-08-05T02:43:11.613 回答
0

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

于 2013-09-04T15:54:41.100 回答