2012-06-29 56 views
2

可能重複時:
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代碼中首先放置任何模塊,這就是事實。

希望這有助於我在哪裏?謝謝!

+0

Py2exe會輸出一個或多或少的文本信息,告訴用戶它是字節編譯的東西。之後,它應該轉儲一個「缺失」的東西列表。你認爲你需要那些圖書館中的任何一個嗎?看看日誌消息,它可能會幫助你 –

+0

我檢查出來。我張貼在我的輸出上面。似乎沒有幫助? – mcfly

+0

你的setup.py腳本是一個很好的起點,任何其他人都可以隨着py2exe可執行文件部署matplotlib。如果我第一次看到它,本來會救了我3小時。 – ecoe

回答

2

延續我編譯程序(進口),它對於我來說運行正常。 如果你不使用這些模塊(我得到了與你所展示的列表相同的列表),那麼py2exe錯過的模塊報告是不相關的。

請記住,可執行文件將在您在py2exe創建的dist模塊內執行時運行(例如,您不需要在桌面上創建副本,因此您需要創建直接訪問鏈接)。

+0

我沒有像你一樣的運氣。你能發表一個你做過什麼的例子嗎?另外,我在它創建的「dist」文件夾中運行它。當我解壓縮library.zip文件夾時,我在那裏看到「os.pyc」... – mcfly

+0

我沒有做任何特別的事,只是複製了你的文件(消除了兩次或三次導入,如我的安裝中沒有的底圖)並執行'python setup.py py2exe'。然後我從shell運行可執行文件,沒有錯誤指示。除了'import os'外,你可以試着消除所有的輸入,並且腳本中只有一條語句(即打印'hello')。並檢查你是否得到相同的問題 – joaquin

+0

似乎與只是進口操作系統並打印罰款「你好」在文件中。我想我必須進一步調查,除非你有其他想法? – mcfly

0
+0

這些都沒有幫助。我已經檢查了這三個網站。 PyInstaller不起作用,因爲我似乎無法修復一些_Imaging C模塊。我似乎無法找出與這些給定的網站py2exe錯誤(似乎線程還沒有完成) – mcfly