11

我已经使用 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
4

2 回答 2

24

2.0.0 刚刚发布。旧的 bo​​otstrap.py 与 2.0.0 不兼容,但默认下载。您可以从此处获取 v2 bootstrap.py ,或者如果您想坚持使用旧版本,请使用下面的代码。

python bootstrap.py -v 1.7.0

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

于 2013-02-10T19:18:04.983 回答
0

问题+答案来自 2013 年。我最近(2015 年)看到它再次发生。

问题是 ubuntu 的python-apport包安装了一个/usr/lib/python2.7/dist-packages/apport_python_hook.py覆盖sys.excepthook. 它确保将 python 回溯输入到 ubuntu 的“apport”错误报告机制中。

这本身不是问题。但是bootstrap.py限制了python路径,使得钩子不能再导入apport了……

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

一个解决方案可能是sudo apt-get remove python-apport. 这至少是我们在服务器上所做的(在任何情况下,apport 都毫无意义)。

于 2015-12-07T09:58:47.097 回答