PySide(1.1.2)、cx_冻结、WinXP、Python 3.3:ImportError:DLL加载失败

PySide(1.1.2)、cx_冻结、WinXP、Python 3.3:ImportError:DLL加载失败,python,pyside,python-3.3,cx-freeze,Python,Pyside,Python 3.3,Cx Freeze,我试图在WindowsXP(x86,SP2/3)上冻结使用PySide libs和cx_freeze的Python 3.3代码 python setup.py build成功运行,但可执行文件抛出一个ImportError: ImportError:DLL加载失败:由于应用程序配置不正确,此应用程序无法启动。重新安装[…] 同样的版本在Windows7x64(SP1)上运行得非常好 我使用的版本如下: win32上的Python 3.3.0(v3.3.0:bd8afb90ebf2,2012年9

我试图在WindowsXP(x86,SP2/3)上冻结使用PySide libs和cx_freeze的Python 3.3代码

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

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

同样的版本在Windows7x64(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.DLL
QtGui.DLL
),库zip在
PySide
文件夹/模块中包含这两个.pyc等价物

即使使用最简单的测试代码(如果代码也在“实时”Python安装上运行*),也会出现此问题:

使用最新版本的PySide可能会解决此问题,但由于PySide 1.2.0引入了cx冻结的新问题(文件加载错误),我想知道是否有人成功地冻结了Windows XP股票上的PySide软件包

否则,我将不得不等到PySide1.2.1发布,并对该版本抱有希望

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

事实证明,这个问题有一个简单的解决方案:应用程序使用的另一个模块的DLL丢失;将其复制到冻结的EXE旁边的root build out文件夹中可以轻松解决此问题

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


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

< P>我过去有过类似的问题,可以通过下载“微软Visual C++ 2008可重分发包(x86)”来解决它。

你说当代码在一个活的Python安装上运行时,会发生这个问题吗?所以这并不是针对冻结的应用程序?是的,这是我所说的,但这一定是在战斗最激烈的时候发生的,当时我在不同的平台上进行测试,而模块的实际安装(最终可能是罪魁祸首)可能没有正确安装。我没有重新构建场景来证明相反的情况,但这是我的理论。为了避免混淆,我将它放在大括号中,谢谢。人们通常建议查看正在运行的应用程序加载了哪些DLL。
from PySide import QtCore, QtGui

if __name__ == "__main__":
    app = QtGui.QApplication("My Application")
    win = QtGui.QMainWindow()
    win.show()
    app.exec_()