【问题标题】:No module named builtins没有名为 builtins 的模块
【发布时间】:2015-02-14 05:45:43
【问题描述】:

我正在尝试使用 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 做错了什么,但您仍然需要查看异常源自的代码以弄清楚 what py2exe 在做什么错误的。毕竟,检查无法在 py2exe 下运行的代码是弄清楚为什么该代码无法在 py2exe 下运行的先决条件。

标签: python py2exe built-in


【解决方案1】:

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

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

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

【讨论】:

  • 在 Ubuntu 中“sudo apt-get install python-future”为我解决了这个问题。
  • Issue "ImportError: No module named past.builtins" 也被这个解决方案解决了。
【解决方案2】:

运行pip install future 为我修复了这个错误。 为了兼容 Python2.7,需要在 setup.py 中的 install_requires 中添加包 future。

请注意,如果没有 matplotlib,nosetests 也会失败,但我不确定添加 matplotlib 作为依赖项是否有意义。

Source

【讨论】:

    【解决方案3】:

    我终于得到了这个工作。原来我在原来的设置文件中有一些错误,其中一些是彻头彻尾的愚蠢,还有一些只是反映了我对 setup 命令的参数如何工作缺乏了解。我要补充一点,后一类错误只能通过一些福尔摩斯式的侦探和简单的旧试验和错误来解决。我的意思是我仍然没有找到任何说明 setup 命令参数的含义和用法的文档。如果有人知道这些信息并且可以传递它,那将不胜感激。

    以此为背景,答案如下:

    有两个基本问题:

    1. 上述安装文件中的软件包列表非常不完整。我仍然不确定规则是你必须列出你的程序所依赖的每一个包,以及它可能依赖的一些你不知道的包(例如 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()
    )
    

    【讨论】:

      【解决方案4】:

      如果pip install future 不适合您,您可能在某处隐藏了未来模块的错误副本。对我来说,PyCharm 安装了future==0.18,而我想要的是future=0.16sudo pip uninstall future 不起作用,您仍然可以导入未来,它将是 0.18。解决方法是找到并删除它。

      >>> import future
      >>> future.__version__
      '0.18.0'
      >>> future.__file__
      '/home/<USERNAME>/.local/lib/python2.7/site-packages/future/__init__.pyc'
      
      rm -rf /home/<USERNAME>/.local/lib/python2.7/site-packages/future
      

      【讨论】:

        猜你喜欢
        • 2019-11-15
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        • 2019-03-28
        • 2017-12-30
        • 2018-01-06
        • 2018-11-11
        • 2015-04-10
        相关资源
        最近更新 更多