wxpython exe未使用pyinstaller生成

wxpython exe未使用pyinstaller生成,python,matplotlib,wxpython,exe,pyinstaller,Python,Matplotlib,Wxpython,Exe,Pyinstaller,我有一个wxpython应用程序,当我将matplotlib作为导入时,它没有构建到exe中。例如,我的主py文件中的导入内容如下所示: import os import matplotlib matplotlib.use('WX') import wx from matplotlib.backends.backend_wx import FigureCanvasWx as FigureCanvas from matplotlib.backends.backend_wx import Navig

我有一个wxpython应用程序,当我将matplotlib作为导入时,它没有构建到exe中。例如,我的主py文件中的导入内容如下所示:

import os
import matplotlib
matplotlib.use('WX')
import wx
from matplotlib.backends.backend_wx import FigureCanvasWx as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from mpl_toolkits.basemap import Basemap
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
import datetime
import copy
import wx.lib.scrolledpanel as scrolled
import wx.lib.agw.pybusyinfo as PBI
我正在使用PyInstaller 1.5.1(我似乎无法在我的机器上正确安装2.0或2.1)。我还使用很棒的GUI2EXE文件来帮助指导我完成所有设置。当我编译代码时——它编译成一个可执行文件,但exe不运行。但是,如果我注释掉所有matplotlib导入,exe将正常生成和打开(它只是不显示我包含的任何贴图)。因此,我知道我的问题在matplotlib导入中

编译时会附加一个警告文件。它很长,但前几行是这样的:

W: no module named termios (top-level import by tty)
W: no module named matplotlib.rcParams (top-level import by matplotlib.figure)
W: no module named numpy.not_equal (top-level import by numpy.numarray.ufuncs)
W: no module named setuptools.Command (top-level import by setuptools.command.setopt)
W: no module named numpy.testing.Tester (top-level import by numpy.polynomial)
W: no module named numpy.compat.formatargspec (top-level import by numpy.ma.core)
经过一系列研究,这似乎是一个隐藏的问题(尽管我可能错了)。我查看了文档(),并使用
hooks matplotlib.figure.py
进行了示例,在其中我尝试了
hiddenimports=['matplotlib','figure']。
我仍然会遇到同样的错误。另外,我在PyInstaller目录中看到hooks文件夹下已经有Matplotlib

我不明白为什么我没有正确使用PyInstaller构建。有什么想法吗

有关更多信息,请参阅我的pyinstaller安装脚本:

data_files = [('AccesstoJson.py', 'C:\\Users\\Jacob\\Documents\\MyFolder\\AccesstoJson.py',
              'DATA'), ('pic2.png', 'C:\\Users\\Jacob\\Documents\\MyFolder\\pic1.png',
              'DATA'), ('Calculate_Distance.py', 'C:\\Users\\Jacob\\Documents\\MyFolder\\Calculate_Distance.py',
              'DATA'), ('pic2.jpg', 'C:\\Users\\Jacob\\Documents\\MyFolder\\pic2.jpg',
              'DATA'), ('pic3.png', 'C:\\Users\\Jacob\\Documents\\MyFolder\\pic3.png',
              'DATA'), ('Program_Data_2013.json', 'C:\\Users\\Jacob\\Documents\\MyFolder\\Program_Data_2013.json',
              'DATA'), ('pic4.ico', 'C:\\Users\\Jacob\\Documents\\MyFolder\\pic4.ico',
              'DATA')]

includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
            'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
            'Tkconstants', 'Tkinter']
packages = []
dll_excludes = []
dll_includes = []

options = [('v', '', 'OPTION')]

analysis = Analysis(['C:\\Python27\\Lib\\site-packages\\pyinstaller-1.5.1\\support\\_mountzlib.py',
           'C:\\Python27\\Lib\\site-packages\\pyinstaller-1.5.1\\support\\useUnicode.py',
           'C:\\Users\\Jacob\\Documents\\MyFolder\\Scheduler_25Oct2013.py'],
                    pathex=['C:\\Python27\\Lib\\site-packages\\mpl_toolkits\\*', 'C:\\Users\\Jacob\\Documents\\MyFolder'],
                    hookspath=['C:\\Python27\\Lib\\site-packages\\numpy-1.7.1-py2.7-win32.egg'],
                    excludes=excludes)

pyz = PYZ(analysis.pure, level=9)   

executable = EXE( pyz,
                 analysis.scripts + includes + packages + options,
                 analysis.binaries - dll_excludes + dll_includes + data_files,
                 name=r"Scheduler1.exe",
                 debug=False,
                 console=False,
                 strip=False,
                 upx=False,
                 icon=r'C:\Users\Jacob\Documents\MyFolder\pic4.ico',
                 version=None)

我也有同样的问题

matplotlib需要运行mpl数据文件夹,无法将其打包到exe文件中。从网站包手动复制此文件夹,或执行以下操作:

import matplotlib
...
setup(
    ...
    data_files=matplotlib.get_py2exe_datafiles(),
)
在您的setup.py for py2exe中。它将复制“数据文件”文件夹