2

可能重复:
输出的 py2exe exe 仅在签名时不会运行:ImportError

我之前问过一个类似的问题(使用 Py2exe 和 matplotlib 错误创建可执行文件)处理 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 代码时我没有收到任何错误——只有当我尝试运行生成的可执行文件时。谢谢!

编辑

好的,这就是我所做的。我已经取出了一些我没有使用的模块并删除了重复项。我还修复了我的 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 Prompt 中运行了以下命令 C:\Python27\python setup.py py2exe:这运行没有错误。

然后当我去运行 Scout_Tool.exe 时,我首先得到一个 MatPlotLib 数据错误。我不知道为什么我会得到这个,但要解决它,我做了以下事情:我解压缩“library.zip”,然后从 Mpl-toolkits - basemap - data 添加“data”文件夹,然后重新压缩库文件夹。

然后,当我尝试运行 Scout_Tool.exe 时,出现“没有名为 os 的模块”的错误。如果我将任何模块放在我的 Scout_Tool.py 代码中,这是正确的。

希望这有助于我在哪里?谢谢!

4

2 回答 2

2

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

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

于 2012-06-29T13:26:38.513 回答
0

不会因此而受到赞扬,但其中任何一个对您的问题有帮助吗?

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

输出的 py2exe exe 仅在签名时不会运行:ImportError

这个问题也是延续

py2exe 不导入 os 模块?

于 2012-06-29T13:19:11.010 回答