Buildout尝试更新系统范围的Distribute安装并拒绝运行

时间:2011-04-28 11:48:57

标签: python buildout

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。

5 个答案:

答案 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片段:

  1. 创建virtualenv
  2. 在virtualenv中安装buildout
  3. 并运行builtout -c builtout.cfg
  4. 生成文件:

    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