可能重複時:
Outputed py2exe exe won't run only when signed: ImportErrorPy2exe錯誤建立可執行
我問過類似的問題之前(Creating executable with Py2exe and matplotlib errors)與matplotlib錯誤處理。但是,我已經走過了這個階段。現在,當我嘗試構建我的可執行文件時,我的包/代碼似乎都沒有導入。例如,我的代碼輸入以下內容:
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
當我運行我的可執行文件「No Module Named os」時出現日誌錯誤。我得到了我的代碼中的每個模塊的錯誤(如果我更改了導入事物的順序)。爲什麼我的模塊沒有導入?我的Py2exe代碼看起來像:
import os
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import matplotlib
import glob
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
import wx
setup(
windows=[{'script': r'Scout_Tool.py'}],
data_files = [(r'mpl-data', glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\*.*')),
(r'mpl-data', [r'C:\Python27\Lib\site-packages\matplotlib\mpl-data\matplotlibrc']),
(r'mpl-data\images',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl- data\images\*.*')),
(r'mpl-data\fonts',glob.glob(r'C:\Python27\Lib\site-packages\matplotlib\mpl- data\fonts\*.*'))],
#matplotlib.get_py2exe_datafiles(),
options={
'py2exe':{
'includes': [
'matplotlib',
'matplotlib.backends.backend_wx',
'matplotlib.pyplot',
'mpl_toolkits.basemap',
'matplotlib.figure',
'numpy.random',
'wx.calendar',
'mpl_toolkits',
'numpy',
'datetime',
'wx',
'pylab',
'adodbapi',
'sqlparse',
'annote_new',
'cPickle',
'pylab'
],
'dll_excludes': ['MSVCP90.dll'],
}
},
)
任何想法爲什麼我的模塊沒有導入後我運行py2exe?順便說一句,我運行py2exe代碼時沒有錯誤 - 只有當我嘗試運行生成的可執行文件時。謝謝!
編輯
好了,這就是我所做的。我已經取出了一些我沒有使用的模塊並刪除了重複項。我也fixey我setup.py文件看起來像:
from distutils.core import setup
import py2exe
import matplotlib
import glob
setup(
windows=[{'script': r'Scout_Tool.py'}],
data_files = matplotlib.get_py2exe_datafiles(),
options={
'py2exe':{
'includes': [
'matplotlib',
'matplotlib.backends.backend_wx',
'matplotlib.pyplot',
'mpl_toolkits.basemap',
'matplotlib.figure',
'wx.calendar',
'mpl_toolkits',
'datetime',
'wx',
'adodbapi',
'sqlparse',
'annote_new',
'cPickle',
'pylab'
],
}
},
)
在此之後,我清空了我的整個「DIST」文件夾,以確保任何未從以前保存。然後我在CMD提示符下運行以下代碼:C:\Python27\python setup.py py2exe
。這運行沒有錯誤。
然後當我去運行Scout_Tool.exe時,我首先得到一個MatPlotLib數據錯誤。我不知道爲什麼我得到這個,但要解決它,我做了以下事情:我解壓縮「library.zip」,然後從Mpl-toolkits - basemap - data中添加「data」文件夾,然後重新壓縮庫夾。
然後,當我嘗試運行Scout_Tool.exe時,它出現了「No module named os」存在的錯誤。如果我在Scout_Tool.py代碼中首先放置任何模塊,這就是事實。
希望這有助於我在哪裏?謝謝!
Py2exe會輸出一個或多或少的文本信息,告訴用戶它是字節編譯的東西。之後,它應該轉儲一個「缺失」的東西列表。你認爲你需要那些圖書館中的任何一個嗎?看看日誌消息,它可能會幫助你 –
我檢查出來。我張貼在我的輸出上面。似乎沒有幫助? – mcfly
你的setup.py腳本是一個很好的起點,任何其他人都可以隨着py2exe可執行文件部署matplotlib。如果我第一次看到它,本來會救了我3小時。 – ecoe