#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, который:
- создает virtualenv
- устанавливает buildout внутри virtualenv
- и запускает 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