Buildout пытается обновить общесистемную распространяемую установку и отказывается запускаться

#python #buildout

#python #buildout

Вопрос:

Buildout не нравится моя общесистемная распространяемая установка и отказывается запускаться:

 plone@s15447224:~/mybuildout$ python bootstrap.py 
Creating directory '/home/plone/mybuildout/bin'.
Creating directory '/home/plone/mybuildout/parts'.
Creating directory '/home/plone/mybuildout/eggs'.
Creating directory '/home/plone/mybuildout/develop-eggs'.
Getting distribution for 'distribute==0.6.14'.
Before install bootstrap.
Scanning installed packages
Setuptools installation detected at /usr/lib/python2.6/dist-packages
Non-egg installation
Removing elements out of the way...
Already patched.
/usr/lib/python2.6/dist-packages/setuptools.egg-info already patched.
After install bootstrap.
Creating /usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg-info
error: /usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg-info: Permission denied
An error occurred when trying to install distribute 0.6.14. Look above this message for any errors that were output by easy_install.
While:
  Bootstrapping.
  Getting distribution for 'distribute==0.6.14'.
Error: Couldn't install: distribute 0.6.14
  

Есть ли какой-нибудь способ сообщить buildout установить свой собственный дистрибутив и не вмешиваться в общесистемную установку Python?

Я знаю о virtualenv. Но, похоже, просто устанавливать virtualenv, чтобы сделать buildout счастливым, излишне. Должен быть какой-то другой способ.

Python 2.6. Plone 4.1. Ubuntu 10.4.

Ответ №1:

Да, используйте Buildout 1.5.x, который запускает Python с аргументом ‘-S’ (-S : не подразумевает ‘сайт импорта’ при инициализации).

(и вы также можете попробовать обновить свой общесистемный дистрибутив до последней версии)

Комментарии:

1. Buildout 1.5 не подходит для Plone?

2. Я использую Buildout 1.5.x с Plone, поэтому я бы сказал, что это сработало. Я не уверен, какая проблема удерживает core от ее использования, если таковая имеется.

Ответ №2:

Похоже, ошибка в distribute_setup.py в настоящее время обходным путем является использование setuptools bootstrap.py

РЕДАКТИРОВАТЬ: более подробная информация в https://bitbucket.org/tarek/distribute/issue/231/bootstrappy-tries-to-modify-global-python#comment-1254375
ПРАВКА2: исправлено http://pypi.python.org/pypi/distribute/0.6.27#id2

Комментарии:

1. Можно ли это исправить в новых выпусках Plone?

2. Я бы предпочел не разбирать, как distribute_setup.py работает, но сообщество разработчиков могло бы заставить кого-нибудь заняться этим!

3. Можете ли вы прояснить ошибку в вопросе?

4. Эта строка: bitbucket.org/tarek/distribute/src/67bbcd0bfdef /…

Ответ №3:

Я тоже это видел. Я думаю, что я всегда заканчивал тем, что «решал» это, действительно используя virtualenv или принимая тот факт, что глобальные setuptools должны быть обновлены, и делая это вручную с помощью чего-то вроде sudo easy_install -U setuptools (или, возможно, используя distribute в качестве имени пакета).

Может быть, эта проблема просто вызвана некоторыми версиями bootstrap.py . Но это всего лишь теория. Я добавляю это к большинству моих сборок Plone 3: http://svn.zope.org/*checkout*/zc.buildout/tags/1.4.4/bootstrap/bootstrap.py

Ответ №4:

kgs, предоставленные zope, закрепляют версию setuptools и распространяют:http://download.zope.org/zopetoolkit/index/1.0.2/ztk-versions.cfg

setuptools = 0.6c11 distribute = 0.6.14

Лучше всего удалить пакет python-setuptools из вашей системы. bootstrap здесь, чтобы убедиться, что у вас есть setuptools или distribute (опция-d), но ваша сборка запрашивает эти версии.

Довольно странно.

Ответ №5:

Я использую ту же концепцию, что и @maurits . Вот фрагмент Makefile, который:

  1. создает virtualenv
  2. устанавливает buildout внутри virtualenv
  3. и запускает builtout -c builtout.cfg

Makefile:

 PROJECT_NAME = <virtualenv_name>
PYTHON := $(shell if [ ! -z "`python --version 2>amp;1 | grep 'Python 2'`" ] ; then echo python; else echo python2; fi)

virtual:
    virtualenv --unzip-setuptools --prompt='$(PROJECT_NAME)::' --python=$(PYTHON) virtual 
    || 
    virtualenv --unzip-setuptools --python=$(PYTHON) virtual

development: virtual
    . virtual/bin/activate amp;amp; make -C . construct-env

construct-env:
    pip install zc.buildout
    buildout -c buildout.cfg