构建可执行文件时出现Py2exe错误

时间:2012-06-29 12:43:37

标签: python module executable py2exe

  

可能重复:
  Outputed py2exe exe won't run only when signed: ImportError

之前我问了一个类似的问题(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命名为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代码时没有错误 - 只有当我尝试运行生成的可执行文件时。谢谢!

修改

好的,这就是我所做的。我已经拿出了一些我没有使用过的模块,并删除了重复项。我还修复了我的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的文件夹 - 底图 - 数据,然后重新压缩库文件夹。

然后,当我尝试运行Scout_Tool.exe时,它会出现错误,"没有名为os"存在。如果我在Scout_Tool.py代码中放置任何模块,则为true。

希望这有助于我所处的位置?谢谢!

2 个答案:

答案 0 :(得分:2)

我编译了你的程序(导入),它对我来说运行正常。 如果您没有使用这些模块,那么py2exe错过的模块报告就不相关了(我得到了与您显示的相同的列表)。

请记住,当您在dist模块py2exe创建时执行它时,可执行文件将运行(例如,不是从桌面上的副本执行。为此,您需要建立直接访问链接)。

答案 1 :(得分:0)

不会因此而受到赞扬,但其中任何一项都有助于解决您的问题吗?

http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=6659

Outputed py2exe exe won't run only when signed: ImportError

这个问题也是

的延续

py2exe doesn't import the os module?