我一直在搜索这个论坛和许多其他人,似乎无法获得创建可执行文件的好方法。我尝试了几种不同的方法(py2exe,pyinstaller和cx_freeze),似乎都给了我一些错误。
当我尝试使用pyinstaller时,我收到“没有安装_imaging C模块”的错误。我搜索的所有内容都表明它与PIL有关,但我的代码没有使用PIL。
当我尝试py2exe时,我一直收到以下错误:
File "Scout_Tool.py", line 18, in <module>
File "matplotlib\pyplot.pyc", line 95, in <module>
File "matplotlib\backends\__init__.pyc", line 25, in pylab_setup
ImportError: No module named backend_qt4agg
我无所适从。我的代码包含以下导入:
import os
import csv
import wx
import time
import math
from matplotlib.backends.backend_wx import FigureCanvasWx as FigureCanvas
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from matplotlib.pyplot import figure,show
from mpl_toolkits.basemap import Basemap
from matplotlib.figure import Figure
import matplotlib.pyplot as plt
from numpy.random import rand
from datetime import datetime
import wx.calendar as cal
import numpy as npy
from pylab import *
import numpy as np
import matplotlib
import adodbapi
import sqlparse
import pylab
import annote_new
import cPickle as pickle
有没有人对如何使用py2exe构建可执行文件有任何建议?我试过的......
from distutils.core import setup
import py2exe
import matplotlib
setup(
windows=[{'script': r'Scout_Tool.py'}],
data_files=matplotlib.get_py2exe_datafiles(),
options={
r'py2exe': {
r'includes': r'ElementConfig',
r'includes': r'ColorConv',
r'includes': r'Tkinter',
r'includes': r're',
r'includes': r'math',
r'includes': r'sys',
r'includes': r'matplotlib',
r'includes': r'mpl_toolkits',
r'includes': r'matplotlib.backends.backend_wx',
r'dll_excludes': [r'MSVCP90.dll'],
}
},
)
感谢您的帮助!
答案 0 :(得分:3)
我不完全确定这会解决您的问题,但您应该首先纠正错误的options
字典条目。在python中,当你一遍又一遍地定义一个具有相同键的字典时,你只会得到最后一个值。密钥只能存在一次:
options={
r'py2exe': {
r'includes': r'ElementConfig',
...
r'includes': r'mpl_toolkits',
r'includes': r'matplotlib.backends.backend_wx',
...
}
}
print options
#{'py2exe': {'includes': 'matplotlib.backends.backend_wx'}}
我怀疑这种用法的结果是py2exe并没有真正找到你想要的任何包含。 includes
应该是一个列表:
options={
'py2exe':{
'includes': [
'ElementConfig',
'ColorConv',
'Tkinter',
're',
'math',
'sys',
'matplotlib',
'mpl_toolkits',
'matplotlib.backends.backend_wx'
],
'dll_excludes': ['MSVCP90.dll'],
}
},
如果在此之后仍然抱怨后端丢失,您可以添加另一个显式条目:
'includes': [
...
'matplotlib.backends.backend_qt4agg'
],