zc.buildout停止工作:ImportError:没有名为apport.fileutils的模块

时间:2013-02-10 19:00:29

标签: python buildout

我一直在使用buildout很长一段时间没有任何问题,事实上我昨天没有任何问题。

但是今天我的所有项目都无法扩建。我尝试了两个不同的Ubuntu工作站,结果相同。

这是我得到的错误:

Initializing zc.buildout
Debug: Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
Traceback (most recent call last):
  File "bootstrap.py", line 259, in <module>
    import zc.buildout.buildout
  File "/tmp/tmpNkVMXW/zc.buildout-2.0.0-py2.7.egg/zc/buildout/buildout.py", line 18, in <module>
    import zc.buildout.easy_install
  File "/tmp/tmpNkVMXW/zc.buildout-2.0.0-py2.7.egg/zc/buildout/easy_install.py", line 59, in <module>
    pkg_resources.Requirement.parse('distribute')
AttributeError: 'NoneType' object has no attribute 'location'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 66, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
ImportError: No module named apport.fileutils

Original exception was:
Traceback (most recent call last):
  File "bootstrap.py", line 259, in <module>
    import zc.buildout.buildout
  File "/tmp/tmpNkVMXW/zc.buildout-2.0.0-py2.7.egg/zc/buildout/buildout.py", line 18, in <module>
    import zc.buildout.easy_install
  File "/tmp/tmpNkVMXW/zc.buildout-2.0.0-py2.7.egg/zc/buildout/easy_install.py", line 59, in <module>
    pkg_resources.Requirement.parse('distribute')
AttributeError: 'NoneType' object has no attribute 'location'

它抱怨没有名为apport.fileutils的模块..但是当我运行python并导入它时我没有异常:

from apport.fileutils import likely_packaged, get_recent_crashes

2 个答案:

答案 0 :(得分:24)

2.0.0刚刚发布。旧的bootstrap.py与2.0.0不兼容,但默认情况下下载。你可以从here获取v2 bootstrap.py,或者如果你想坚持旧版本,可以使用下面的代码。

python bootstrap.py -v 1.7.0

编辑:旧版本的v1 bootstrap.py不允许版本强制。最新版本here可以。

答案 1 :(得分:0)

问题+回答是从2013年开始的。我最近(2015年)又看到了它。

问题是ubuntu的python-apport包安装了覆盖/usr/lib/python2.7/dist-packages/apport_python_hook.py的{​​{1}}文件。它确保python回溯被输入到ubuntu的“apport”错误报告机制中。

这本身不是问题。但是sys.excepthook限制了python路径,因此钩子不能再导入bootstrap.py ......

因此,如果在引导程序运行期间发生错误,则会打印一个异常,然后第二次失败,因为无法导入apport。

解决方案可以是apport。这至少就是我们在服务器上所做的事情(在任何情况下,让apport毫无意义)。