cx_freeze:ImportError:DLL加载失败:找不到此指定的模块

时间:2017-03-20 20:29:46

标签: python dll import pyqt4 cx-freeze

我在一台机器上使用Python36开发了一个PyQt4应用程序,并成功使用cx_freeze进行了编译。生成的.exe在开发计算机上运行正常,但在不同的基于Windows的计算机上运行时会导致以下错误:

  

cx_Freeze:主脚本中的Python错误   Traceback(最近一次调用最后一次):   文件   " C:.. \ Python \ Python36-32 \ lib \ site-package \ cx_Freeze \ initscripts_startup_,第12行in   文件   " C:... \ Python \ Python36-32 \ lib \ site-package \ cx_Freeze \ initscripts \ Console.py,第24行,在文件" .py",第17行,in   ImportError:DLL加载失败:找不到此指定的模块。

我的代码中的第17行是指PyQt4:

  

从PyQt4导入QtCore,QtGui

我假设cx_freeze复制了我开发机器上所有必需的DLL,所以我有点困惑。任何人都可以帮我解决这个错误吗?

1 个答案:

答案 0 :(得分:-2)

对我来说,这个问题的cx_freeze应用程序正在运行某些,但并非所有计算机都在其上开发的计算机上,似乎已经通过另外包括:' \ PrivateDLLs \ msvcp140解决了的.dll'在cx_freeze setup.py中包含的文件列表中。如果在某些计算机上没有这个,则在尝试导入PyQt4.QtCore时会抛出以下错误:

ImportError:DLL加载失败:找不到此指定的模块。

我正在研究的项目是使用cx_freeze冻结的Python 3.5 Traitsui应用程序(使用pyqt4后端)。 cx_freeze成功冻结了这个python脚本。

需要包含在cx_freeze中的include_files字典条目中的PrivateDLL的完整列表(来自c:\ users \ user_name \ AppData \ Local \ Enthought \ Canopy \ edm \ envs \ User \ privateDLLs)是:mk2_core.dll ; mk2_def.dll; mk2_intel_thread.dll; mk2mmd.dll; mk2ifcoremd.dll; mk2iomp5md.dll; msvcp140.dll