Подтвердить что ты не робот

Zc.buildout перестает работать: ImportError: нет модуля с именем apport.fileutils

Я уже давно использую 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
4b9b3361

Ответ 1

2.0.0 только что выпущен. Старый bootstrap.py не совместим с 2.0.0, но загружает его по умолчанию. Вы можете загрузить v2 bootstrap.py из здесь или использовать следующий код, если вы хотите придерживаться старой версии.

python bootstrap.py -v 1.7.0

edit: старые версии v1 bootstrap.py не позволяют форсировать форматирование. Текущая версия здесь.

Ответ 2

Вопрос + ответ - с 2013 года. Недавно (2015 год) это повторилось.

Проблема заключается в том, что пакет ubuntu python-apport устанавливает файл /usr/lib/python2.7/dist-packages/apport_python_hook.py, который переопределяет sys.excepthook. Это гарантирует, что трассировки python подаются в механизм сообщения об ошибках ubuntu "apport".

Это само по себе не проблема. Но bootstrap.py ограничивает путь python, так что крючок больше не может импортировать apport...

Итак, если во время запуска bootstrap возникает ошибка, выводится исключение, которое затем не выполняется во второй раз, потому что apport не может быть импортирован.

Решение может быть sudo apt-get remove python-apport. Это, по крайней мере, то, что мы сделали на сервере (там, где apport не имеет смысла в любом случае).