更新:
事实证明,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.path
就在try
里面引发此异常的语句。路径没问题,列出foo-1.2
首先和foo-2.0
遥遥领先的第二名。
我做错了什么?有没有办法让easy_install忽略非virtualenv foo-2.0
安装并验收foo-1.2
在虚拟环境中?
正在从 sys.path
中删除有问题的条目在我的鸡蛋里setup.py
没有帮助。而sys.path
仅包含 foo
的正确版本,该过程失败并出现相同的错误。
最佳答案
除了您直接遇到的情况之外,还有另一种可能发生这种情况的情况,但很容易避免:
设置新的 virtualenv 时,请使用 --no-site-packages
来避免包含系统 Python 安装中的库,除非您确定它们不会(也永远不会)发生冲突。
关于python - easy_install 'develop' 命令在 virtualenv 中无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339631/