Buildout不喜欢我的系统范围的Distribute安装并拒绝运行:
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安装自己的Distribute而不是搞乱系统范围的Python安装?
我知道virtualenv。但是,安装virtualenv以使buildout变得快乐似乎是一种矫枉过正。必须有其他方式。
Python 2.6。 Plone 4.1。 Ubuntu 10.4。
答案 0 :(得分:4)
是的,使用Buildout 1.5.x,它使用'-S'参数运行Python(-S:在初始化时不暗示'导入网站')。
(您可以尝试将系统范围的Distribute升级到最新版本)
答案 1 :(得分:3)
我也见过这个。我认为我总是通过确实使用virtualenv
或者接受全局设置工具应该更新并使用类似sudo easy_install -U setuptools
的方式手动执行(或者使用分发为包)来“解决”它名称)。
可能这个问题只是由某些版本的bootstrap.py
引起的。但那只是一个理论。我将这个添加到我的Plone 3大部分扩建中:http://svn.zope.org/*checkout*/zc.buildout/tags/1.4.4/bootstrap/bootstrap.py
答案 2 :(得分:3)
似乎是distribute_setup.py中的一个错误,目前解决方法是使用setuptools bootstrap.py
编辑: https://bitbucket.org/tarek/distribute/issue/231/bootstrappy-tries-to-modify-global-python#comment-1254375中的更多详情 EDIT2:已修复http://pypi.python.org/pypi/distribute/0.6.27#id2
答案 3 :(得分:0)
kgs由zope提供setuptools的版本并分发: http://download.zope.org/zopetoolkit/index/1.0.2/ztk-versions.cfg
setuptools = 0.6c11 分布= 0.6.14
最好从您的系统中删除python-setuptools包。 bootstrap在这里确保你有setuptools或分发(-d选项),但你的buildout问这些版本。
非常奇怪。
答案 4 :(得分:0)
我使用与@maurits相同的概念。这是Makefile片段:
生成文件:
PROJECT_NAME = <virtualenv_name>
PYTHON := $(shell if [ ! -z "`python --version 2>&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 && make -C . construct-env
construct-env:
pip install zc.buildout
buildout -c buildout.cfg