1

更新:

事实证明,virtualenv 在运行之前没有正确初始化easy_install。一旦这个问题得到纠正,事情就开始按预期工作了。没有解决方案可以发布,因为所述问题首先不存在。'当我激活 virtualenv'步骤没有正确执行(不要问),所以下面的故障是一种错觉。

结案。

原始问题:

我有一个虚拟环境。在里面,sys.path看起来像这样:

[...,
 '/<inside_virtualenv>/lib/python2.6/site-packages/foo-1.2.egg',
 ...
 '/usr/local/lib/python2.6/dist-packages/foo-2.0.egg'
]

如果我import foo从 virtualenv 内部,我会按预期导入 foo-1.2。

我有一个鸡蛋;它的设置文件列出了另一个 egg 作为其依赖项foo=1.2中的依赖项。

当我激活 virtualenv 并尝试运行python <my_egg>/setup.py develop时,出现错误:

Processing dependencies for <my egg>
Installed distribution foo 2.0 conflicts with requirement foo==1.2

我什至修补了在引发此异常的语句中setuptools/command/easy_install.py打印。路径没问题,列第一,远第二。sys.pathtryfoo-1.2foo-2.0

我究竟做错了什么?有没有办法让easy_install忽略非virtualenvfoo-2.0安装并foo-1.2在virtualenv内部接受?

sys.path从我的鸡蛋里面去除有问题的条目setup.py并没有帮助。虽然sys.path仅包含 的正确版本foo,但该过程失败并出现相同的错误。

4

1 回答 1

2

除了您直接经历的情况之外,还有另一种可能发生的情况,但很容易避免:

设置新的 virtualenv 时,--no-site-packages请避免包含系统 Python 安装中的库,除非您确定它们不会(也永远不会)冲突。

于 2012-05-03T20:16:09.253 回答