Cha*_*e_M 20 python py2exe built-in
我正在尝试使用py2exe将我的.py脚本转换为可执行文件.到目前为止,我遇到了许多问题,这些问题主要通过下面的安装文件中的"选项"来解决.但现在我有,我一直没能找到可以解决的问题,并想知道如果别人有同样的问题,并固定它.
当我执行下面使用"蟒蛇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()
)
Run Code Online (Sandbox Code Playgroud)
以下是错误消息的完整列表:

小智 46
我还发现使用'pip install future'解决了这个问题
我从这里得到的信息:https://askubuntu.com/questions/697226/importerror-no-module-named-builtins
我希望这能为其他用户澄清这一点,比如我偶然发现了你的问题
我终于得到了这个工作。原来我在原来的安装文件中有一些错误,其中一些是彻头彻尾的愚蠢,还有一些只是反映了我对 setup 命令的参数如何工作缺乏了解。我要补充的是,后一类错误只能通过一些夏洛克福尔摩斯式的侦探和简单的旧试错来解决。我的意思是我仍然没有找到任何说明 setup 命令参数含义和用法的文档。如果有人有这些信息并且可以传递它,那将不胜感激。
以此为背景,答案如下:
有2个基本问题:
可悲的是,上述安装文件中的软件包列表不完整。我仍然不确定规则是您必须列出您的程序所依赖的每个包,以及它可能依赖的一些您不知道的包(例如 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()
)
Run Code Online (Sandbox Code Playgroud)