1

我构建了一个代码,然后使用 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

我在互联网上看到了一些解决此问题的方法,但无法成功解决此问题。有人有想法么 ?

4

1 回答 1

0

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

  1. hello-pyqt.py使用这个问题 创建了一个文件: How 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 的一个答案,分别无法生成可执行文件和这个Py2exeAndPyQt 页面

  3. 执行setup.py

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

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

    • 添加了hello-pyqt.exelibrary.zip
    • 安装命令设置为hello-pyqt.exe.
    • 启用长文件名支持

将您的流程与我正在使用的流程(上图)进行比较,看看是否有任何帮助。如果做不到这一点,我会使用进程监视器来查看它无法加载的 DLL 以及它在哪里寻找。


捆绑在 my 中的 DLLlibrary.zip是:QtCore4.dllQtGui4.dll. 您可能需要检查library.zip以确保这些文件在那里。

于 2013-10-03T20:11:20.037 回答