没有名为builtins的模块

问题描述 投票:15回答:3

我正在尝试使用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()
)

以下是错误消息的完整列表:

python py2exe built-in
3个回答
33
投票

我还发现使用'pip install future'解决了这个问题

我从这里得到了信息:https://askubuntu.com/questions/697226/importerror-no-module-named-builtins

我希望这能为其他用户澄清这一点,比如我偶然发现了你的问题


2
投票

我终于搞定了这个。事实证明我在原始设置文件中有一些错误,其中一些是完全愚蠢的,有些只是简单地重新理解我对setup命令的参数如何工作缺乏了解。我将补充说,后一类错误只能通过一些Shelock Holmes风格的调查和普通的旧试验和错误来解决。我的意思是,我仍然没有找到任何文档来调出setup命令的参数的含义和用法。如果有人有这些信息并且可以将其传递给woudl,我将非常感激。

以此为背景,答案如下:

有两个基本问题:

  1. aboe安装文件中的软件包列表非常不完整。我仍然不确定规则是你必须列出你的程序所依赖的每一个包,以及它可能依赖你不知道的一些包(例如,pytz,例如......)。但是当我这样做的时候,我有一些东西可以让我最终开始工作。
  2. 上面原始问题中的错误消息看起来像我的程序依赖于一个叫做“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()
)

1
投票

运行pip install future为我修复了这个错误。为了与Python2.7兼容,应将包未来添加到setup.py中的install_requires。

请注意,nosetests在没有matplotlib的情况下也会失败,但我不确定添加matplotlib作为依赖是否有意义。

Source

© www.soinside.com 2019 - 2024. All rights reserved.