没有名为内建模块的模块
我正在尝试使用py2exe将.py脚本转换为可执行文件。到目前为止,我遇到了许多问题,这些问题已在下面的安装文件中的“选项”中得到了解决。但是现在我有一个问题,我无法找到解决方案,并且想知道其他人是否也遇到了同样的问题并加以解决。
当我使用“ python setup.py py2exe”执行以下安装文件时,它给了我一个可执行文件,但是当我运行它时,它抱怨“没有名为内建模块”。
我可以找到的关于该主题的唯一其他文章表明,内置是python3的东西,但是我正在运行2.7。
感谢任何建议或提示。
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import os
import matplotlib
matplotlibdatadir = matplotlib.get_data_path()
matplotlibdata = findall(matplotlibdatadir)
setup(
console=['DET14.py'],
options={
'py2exe': {
'packages' : ['matplotlib', 'pytz'],
'dll_excludes':['MSVCP90.DLL',
'libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll'],
'includes':['scipy.sparse.csgraph._validation',
'scipy.special._ufuncs_cxx']
}
},
# data_files=matplotlibdata_files
data_files=matplotlib.get_py2exe_datafiles()
)
以下是错误消息的完整列表:
-
我终于得到了这个工作。原来,我在原始安装文件中存在一些错误,其中一些完全是愚蠢的,而某些仅反映了我对setup命令的参数如何工作缺乏理解。我将补充说,后一类错误只能通过一些福尔摩斯式的侦查和简单的旧式尝试和错误来解决。我的意思是,我还没有找到任何文件说明setup命令参数的含义和用法。如果有人拥有该信息并且可以通过它,将不胜感激。
以此为背景,这里是答案:
有两个基本问题:
-
上述安装文件中的软件包列表很不完整。我仍然不确定规则是否必须列出程序所依赖的每个软件包,以及它可能不依赖的某些软件包(例如pytz)。但是当我这样做的时候,我当时有了一些可以最终开始工作的东西。
-
上述原始问题中的错误消息看起来像我的程序依赖于称为“ patsy”的事物。这让我感到困惑,因为我不知道那是什么。事实证明,statsmodels(这是我的项目的核心)对patsy具有依赖性,因此需要将其包括在“包”列表中。
下面是最终可用的安装文件。我希望对修补程序背后的逻辑的这种描述对其他面临相同问题的人有所帮助。
from distutils.core import setup import py2exe from distutils.filelist import findall import os import matplotlib matplotlibdatadir = matplotlib.get_data_path() matplotlibdata = findall(matplotlibdatadir) setup( console=['DET14.py'], options={ 'py2exe': { 'packages' : ['matplotlib', 'pytz','easygui',\ 'statsmodels','pandas','patsy'], 'dll_excludes':['MSVCP90.DLL', 'libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'libgdk_pixbuf-2.0-0.dll'], 'includes':['scipy.sparse.csgraph._validation', 'scipy.special._ufuncs_cxx'] } }, data_files=matplotlib.get_py2exe_datafiles() )
-