提取通过Iexpress创建的python exe获取ImportError:DLL加载失败:找不到指定的模块。错误

时间:2013-08-28 16:33:18

标签: pyqt iexpress

我构建了一个代码,然后使用py2exe从.py创建了一个exe。

现在我想创建一个相同的自我,所以我使用Iexpress来做到这一点。我能够从Iexpress创建exe,但是当我尝试从exe创建中提取我的应用程序时,我得到以下错误:

Traceback (most recent call last):
File "C.py", line 44, in <module>
File "A.pyc", line 4, in <module>
File "PyQt4\QtGui.pyc", line 12, in <module>
File "PyQt4\QtGui.pyc", line 10, in __load
ImportError: DLL load failed: The specified module could not be found.

看来,错误全部排成一行:

from PyQt4 import QtCore, QtGui

我在互联网上看到了一些修复此问题的方法,但无法解决这个问题。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我试图在这里重现这一点,但似乎工作正常。这是我做的:

  1. 使用此问题创建了一个文件hello-pyqt.pyHow to implement a simple button in PyQt

  2. 创建了setup.py

    from distutils.core import setup
    import py2exe
    
    setup(console=['hello-pyqt.py'],
          options={'py2exe': {'bundle_files': 1,
                              'dll_excludes': ['w9xpopen.exe', 'MSVCP90.dll'],
                              'includes': ['sip']}}
         )
    

    dll_excludesincludes技巧分别来自py2exe fails to generate an executablePy2exeAndPyQt page的答案。

  3. 已执行setup.py

    python setup.py py2exe
    
  4. 在使用IExpress之前测试输出:

    dist\hello-pyqt.exe
    
  5. 以常规方式将其与IExpress捆绑在一起:

    • 添加了hello-pyqt.exelibrary.zip
    • 安装命令设置为hello-pyqt.exe
    • 已启用长文件名支持
  6. 将您的流程与我正在使用的流程(上图)进行比较,看看是否有任何可能有用的方法。如果做不到这一点,我会使用Process Monitor来查看哪些DLL无法加载以及它正在查找的位置。


    library.zip中捆绑的DLL包括:QtCore4.dllQtGui4.dll。您可能需要检查library.zip以确保这些文件存在。