Python Tkinter、Matplotlib、py2exe:导入错误:运行.exe时DLL加载失败

Python Tkinter、Matplotlib、py2exe:导入错误:运行.exe时DLL加载失败,python,matplotlib,executable,py2exe,pyinstaller,Python,Matplotlib,Executable,Py2exe,Pyinstaller,我有一个名为UIMaster.py的python程序,我正在使用py2exe将其转换为可执行文件。但是,当我在终端中运行setup.py文件时,它正在创建build和dist文件夹,并在dist文件夹中包含UIMaster.exe文件;当我双击它时,终端窗口弹出,然后等待一秒钟并写入一些文本(关闭太快,无法读取),然后关闭。然而,当我用python运行python程序时,一切都正常。我不能100%确定为什么会发生这种情况。我正在使用matplotlib,我认为这可能是导致问题的原因。我确信我需要

我有一个名为UIMaster.py的python程序,我正在使用py2exe将其转换为可执行文件。但是,当我在终端中运行setup.py文件时,它正在创建build和dist文件夹,并在dist文件夹中包含UIMaster.exe文件;当我双击它时,终端窗口弹出,然后等待一秒钟并写入一些文本(关闭太快,无法读取),然后关闭。然而,当我用python运行python程序时,一切都正常。我不能100%确定为什么会发生这种情况。我正在使用matplotlib,我认为这可能是导致问题的原因。我确信我需要从选项中排除一些内容,并可能向数据文件中添加一些内容,但不确定这是否正确。当我进入终端和cd dist,然后运行UIMaster.exe时,会收到以下消息:

Traceback (most recent call last):
    File "UIMaster.py", line 7, in <module>
    File "matplotlib\__init__.pyc", line 1100, in <module>
    File "matplotlib\__init__.pyc", line 947, in rc_params
    File "matplotlib\__init__.pyc", line 789, in matplotlib_fname
    File "matplotlib\__init__.pyc", line 325, in wrapper
    File "matplotlib\__init__.pyc", line 693, in _get_data_path_cached
    File "matplotlib\__init__.pyc", line 689, in _get_data_path
RuntimeError: Could not find the matplotlib data files
我还尝试了以下操作,但仍然收到相同的错误消息:

from distutils.core import setup
import zmq.libzmq
import py2exe
import numpy
import matplotlib
import pylab
setup(
    console = ['UIMaster.py'],
    zipfile='lib/library.zip',
    options={
        'py2exe': {
            'includes': ['zmq.backend.cython'],
            'excludes': ['zmq.libzmq','_gtkagg', '_tkagg'],
            'dll_excludes': ['libzmq.pyd'],
        }
    },
    data_files=[
        ('lib', (zmq.libzmq.__file__,),matplotlib.get_py2exe_datafiles() )
    ]
)
from distutils.core import setup
import zmq.libzmq
import py2exe
import matplotlib
setup(
    console = ['UIMaster.py'],
    zipfile='lib/library.zip',
    options={
        'py2exe': {
            'packages': ['matplotlib', 'pytz'],
            'includes': ['zmq.backend.cython'],
            'excludes': ['zmq.libzmq','_gtkagg', '_tkagg'],
            'dll_excludes': ['libzmq.pyd','libgdk-win32-2.0-0.dll',
                                     'libgobject-2.0-0.dll',
                                     'libgdk_pixbuf-2.0-0.dll',
                                     'libgtk-win32-2.0-0.dll',
                                     'libglib-2.0-0.dll',
                                     'libcairo-2.dll',
                                     'libpango-1.0-0.dll',
                                     'libpangowin32-1.0-0.dll',
                                     'libpangocairo-1.0-0.dll',
                                     'libglade-2.0-0.dll',
                                     'libgmodule-2.0-0.dll',
                                     'libgthread-2.0-0.dll',
                                     'QtGui4.dll', 'QtCore.dll',
                                     'QtCore4.dll'],
        }
    },
    data_files=[
        ('lib', (zmq.libzmq.__file__,),matplotlib.get_py2exe_datafiles(),)
    ]
)
最后,我尝试了以下操作并得到了相同的错误消息:

from distutils.core import setup
import zmq.libzmq
import py2exe
import numpy
import matplotlib
import pylab
setup(
    console = ['UIMaster.py'],
    zipfile='lib/library.zip',
    options={
        'py2exe': {
            'includes': ['zmq.backend.cython'],
            'excludes': ['zmq.libzmq','_gtkagg', '_tkagg'],
            'dll_excludes': ['libzmq.pyd'],
        }
    },
    data_files=[
        ('lib', (zmq.libzmq.__file__,),matplotlib.get_py2exe_datafiles() )
    ]
)
from distutils.core import setup
import zmq.libzmq
import py2exe
import matplotlib
setup(
    console = ['UIMaster.py'],
    zipfile='lib/library.zip',
    options={
        'py2exe': {
            'packages': ['matplotlib', 'pytz'],
            'includes': ['zmq.backend.cython'],
            'excludes': ['zmq.libzmq','_gtkagg', '_tkagg'],
            'dll_excludes': ['libzmq.pyd','libgdk-win32-2.0-0.dll',
                                     'libgobject-2.0-0.dll',
                                     'libgdk_pixbuf-2.0-0.dll',
                                     'libgtk-win32-2.0-0.dll',
                                     'libglib-2.0-0.dll',
                                     'libcairo-2.dll',
                                     'libpango-1.0-0.dll',
                                     'libpangowin32-1.0-0.dll',
                                     'libpangocairo-1.0-0.dll',
                                     'libglade-2.0-0.dll',
                                     'libgmodule-2.0-0.dll',
                                     'libgthread-2.0-0.dll',
                                     'QtGui4.dll', 'QtCore.dll',
                                     'QtCore4.dll'],
        }
    },
    data_files=[
        ('lib', (zmq.libzmq.__file__,),matplotlib.get_py2exe_datafiles(),)
    ]
)
注意:我还必须调整zmq模块

我想在pyinstaller上使用py2exe,只是因为我不熟悉pyinstaller,但如果有人能给我一些pyinstaller上的指针,那么我会将其用于我的可执行文件转换

编辑:我试图使用pyinstaller,但我一直得到

IOError Errno[22] invalid mode <'rb'> or filename: "
IOError Errno[22]模式或文件名无效:
要启动并运行可执行文件,我还需要做什么?我已经在生成build和dist文件夹,但是不知道为什么程序没有从可执行文件中弹出。谢谢大家

编辑:使用matplotlib.get_py2exe_datafiles()时

当我转到dist文件夹并运行.exe时,会产生以下错误:

  File "UIMaster.py", line 7, in <module>
  File "matplotlib\pyplot.pyc", line 109, in <module>
  File "matplotlib\backends\__init__.pyc", line 32, in pylab_setup
  File "matplotlib\backends\backend_qt4agg.pyc", line 17, in <module>
  File "matplotlib\backends\backend_qt5agg.pyc", line 18, in <module>
  File "matplotlib\backends\backend_qt5.pyc", line 31, in <module>
  File "matplotlib\backends\qt_compat.pyc", line 91, in <module>
  File "PyQt4\QtCore.pyc", line 12, in <module>
  File "PyQt4\QtCore.pyc", line 10, in __load
  ImportError: DLL load failed: The specified module could not be found.
文件“UIMaster.py”,第7行,在
文件“matplotlib\pyplot.pyc”,第109行,在
pylab_设置中第32行的文件“matplotlib\backends\\ uu_init__uuuu.pyc”
文件“matplotlib\backends\backend_qt4agg.pyc”,第17行,在
文件“matplotlib\backends\backend_qt5agg.pyc”,第18行,在
文件“matplotlib\backends\backendqt5.pyc”,第31行,在
文件“matplotlib\backends\qt_compat.pyc”,第91行,在
文件“PyQt4\QtCore.pyc”,第12行,在
文件“PyQt4\QtCore.pyc”,第10行,加载
ImportError:DLL加载失败:找不到指定的模块。

您使用的是哪种python和matplotlib版本?请尝试按如下方式编辑
数据文件
选项:
数据文件=[('lib',[zmq.libzmq.\uu文件]])]+matplotlib.get_py2exe_datafiles()
。添加该选项时运行正常,但现在出现以下错误:(我将把它放在底部的一个编辑中,这样就很容易看到了)@Yoel我的python是2.7,我的matplotlib是1.4.3版本您使用的是哪些python和matplotlib版本?请尝试编辑
数据文件
选项,如下所示:
数据文件=[('lib',[zmq.libzmq.\uuuuuuu文件]]+matplotlib.get\u py2exe\udatafiles()
。当我添加它时,它运行正常,但现在我得到了以下错误:(我将把它放在底部的一个编辑中,以便于查看)@Yoel我的python是2.7版,matplotlib是1.4.3版