我正在尝试使用py2exe将我的.py脚本转换为可执行文件。到目前为止,我遇到了许多问题,这些问题主要通过下面的安装文件中的“选项”来解决。但是现在我有一个问题,我无法找到解决方案,并想知道其他人是否有同样的问题并修复它。
当我使用“python setup.py py2exe”执行下面的安装文件时,它给了我一个可执行文件,但是当我运行它时,它会抱怨“没有名为builtins的模块”。
我在这个主题上找到的唯一一篇文章表明内置函数是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()
)
以下是错误消息的完整列表:
我还发现使用'pip install future'解决了这个问题
我从这里得到了信息:https://askubuntu.com/questions/697226/importerror-no-module-named-builtins
我希望这能为其他用户澄清这一点,比如我偶然发现了你的问题
我终于搞定了这个。事实证明我在原始设置文件中有一些错误,其中一些是完全愚蠢的,有些只是简单地重新理解我对setup命令的参数如何工作缺乏了解。我将补充说,后一类错误只能通过一些Shelock Holmes风格的调查和普通的旧试验和错误来解决。我的意思是,我仍然没有找到任何文档来调出setup命令的参数的含义和用法。如果有人有这些信息并且可以将其传递给woudl,我将非常感激。
以此为背景,答案如下:
有两个基本问题:
以下是最终正常工作的安装文件。我希望这个修复背后的逻辑描述对于面临同样问题的其他人是有帮助的。
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()
)
运行pip install future
为我修复了这个错误。为了与Python2.7兼容,应将包未来添加到setup.py中的install_requires。
请注意,nosetests
在没有matplotlib的情况下也会失败,但我不确定添加matplotlib作为依赖是否有意义。