Cx_Freeze DLL加载失败
我尝试使用cx_freeze已经有一段时间了,但总是出现同样的错误。
import cx_Freeze.util
ImportError: DLL load failed: %1 is not a valid win32 application
我试过32位和64位的版本,也试过setup.py和cxfreeze.bat这两种方法。
我想问的是,怎么才能让它正常工作呢?
1 个回答
1
我也遇到过同样的问题,这里是我的解决办法。
我在使用64位的Windows系统,Python版本是3.2,所有的库安装都是64位的,包括cx_freeze。当我尝试“冻结”一个导入了PyQt4包的程序时,出现了错误:
ImportError: DLL load failed: %1 is not a valid win32 application
在我的情况下,问题是cxfreeze脚本从我的MATLAB安装中复制了两个DLL文件(QtCore4.dll和QtGui4.dll),而不是从我的Python安装中复制。MATLAB的DLL是32位的,而Python的DLL是需要的64位文件。
运行cxfreeze脚本来生成exe文件时,注意查看显示的消息。最后几条消息应该是“copying ...dll-> ....dll”。检查文件名,确保所有文件确实是从你的Python安装中复制的,而不是其他程序。
如果它们是从其他地方复制的(就像我遇到的情况),你可以在构建后自己手动复制过来。否则,你需要更改路径,不要包含那些32位DLL所在的文件夹。