如何解决bin/python bootstrap.py-d期间的pkg_resources.VersionConflict错误

2024-05-14 03:07:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python plone-devstart.py工具创建一个新的plone环境。我有一个引导错误。所以我在项目目录中使用了命令bin/python bootstrap.py-d。它(bin/python bootstrap.py-d命令)以前工作得很好,但现在出现了一个错误,如

oomsys@oomsysmob-6:~/demobrun$ bin/python bootstrap.py -d
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-  
0.6.49.tar.gz
Extracting in /tmp/tmpDqVwYA
Now working in /tmp/tmpDqVwYA/distribute-0.6.49
Building a Distribute egg in /tmp/tmpv4Bzyv
/tmp/tmpv4Bzyv/distribute-0.6.49-py2.7.egg
Traceback (most recent call last):
File "bootstrap.py", line 118, in <module>
ws.require('zc.buildout' + VERSION)
File "build/bdist.linux-i686/egg/pkg_resources.py", line 698, in require
File "build/bdist.linux-i686/egg/pkg_resources.py", line 600, in resolve
pkg_resources.VersionConflict: (setuptools 0.6c11 (/home/oomsys/demobrun  
/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg),    
Requirement.parse('setuptools>=0.7'))

Tags: inpy命令bineggplone错误line
2条回答

您的站点包中安装了distributefork of setuptools,但您的bootstrap.py正在尝试安装buildout2.2.0,它使用新的合并的eggsetuptools0.7或更新的egg。

setuptoolsdistribute分叉合并到setuptools项目中,这个转换会引起一些痛苦。

你的选择是:

告诉bootstrap使用较早的zc.buildout版本

使用-v选项运行bootstrap.py,强制它坚持使用特定的早期版本:

 $ bin/python bootstrap.py -d -v 2.1.1

buildout的2.1.1版不会将自身升级到2.2或更高版本,并且可以使用distribute-提供的setuptoolsegg。

卸载旧的distributeegg

site-packages目录中手动删除所有distribute*pkg_resources.py*setuptools*文件:

$ rm -rf /home/oomsys/demobrun/lib/python2.7/site-packages/setuptools*
$ rm -rf /home/oomsys/demobrun/lib/python2.7/site-packages/distribute*
$ rm -rf /home/oomsys/demobrun/lib/python2.7/site-packages/pkg_resources.py*

(可选)使用最新的ez_setup.py重新安装setuptools;当前版本是0.9.6,并且^{} PyPI page将您链接到this ^{} version

您还需要升级bootstrap.py脚本,请参见下文。

使用最近的virtualenv

1.9版或更新版本的virtualenv(2013年3月发布)允许您使用--no-setuptools开关创建不带setuptoolsegg的virtualenv:

$ virtualenv --no-setuptools buildout_env

使用它创建一个虚拟环境python来运行bootstrap.py。你还需要升级你的bootstrap.py。见下文。

升级您的bootstrap.py

对于zc.buildout版本2.2.0和更高版本,已更新bootstrap.py脚本以加载setuptools非分叉版本。在from github (link to the 2 branch version)获取一个新副本,用它替换旧的bootstrap.py,然后重新引导。

请确保您确实删除了旧分叉-distribute-但先假装是-setuptoolsegg,或者使用没有该egg的虚拟env python运行。见上文。

相关问题 更多 >