Python 易于安装';开发';命令在virtualenv中无法工作 更新:

Python 易于安装';开发';命令在virtualenv中无法工作 更新:,python,virtualenv,easy-install,Python,Virtualenv,Easy Install,事实证明,在运行easy\u install之前,virtualenv没有正确初始化。一旦纠正了这一点,事情就开始按预期进行。post没有解决方案,因为声明的问题一开始就不存在。“当我激活virtualenv”步骤没有正确执行(不要询问),因此以下故障是一种错觉 案件结案 原始问题: 我有一个虚拟的。在其内部,sys.path如下所示: [..., '/<inside_virtualenv>/lib/python2.6/site-packages/foo-1.2.egg', ..

事实证明,在运行
easy\u install
之前,virtualenv没有正确初始化。一旦纠正了这一点,事情就开始按预期进行。post没有解决方案,因为声明的问题一开始就不存在。“当我激活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'
]
我甚至在引发此异常的
try
语句中,对
setuptools/command/easy\u install.py
进行了修补,以打印
sys.path
。路径是正确的,首先列出的是
foo-1.2
,其次是
foo-2.0

我做错了什么?有没有办法让安装变得简单?忽略非virtualenv
foo-2.0
安装并在virtualenv中接受
foo-1.2


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

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


在设置新的virtualenv时,请使用
--无站点软件包
,以避免包含系统Python安装中的库,除非您确定它们不包含(而且永远不会包含)冲突。

添加您的解决方案作为答案-我不止一次犯过这个错误,最好能通过da googlez找到另一个解决方案。@AlG:除了为virtualenv正确运行
activate
脚本之外,没有合适的“解决方案”。在这之后,一切都按预期进行,没有冲突。这一切都只是一个配置错误的问题。@MacGuy:我希望我能发布一个实际的解决方案。相反,整个问题是一个愚蠢的错误造成的。我会重新设计这篇文章以更好地反映这一点。据我所知,当virtualenv被激活时,安装在virtualenv中的软件包总是胜过系统范围的软件包。使用
--无站点软件包
是避免与系统软件包冲突的可靠方法,但这是理论。然而,在实践中并不总是如此——如果您正在安装某个系统包提供依赖项的东西(但在旧版本中不太可能工作),但是requirements.txt没有充分指定最低版本。。。好吧,假设我在实践中见过这种情况。关于其他鸡蛋可能没有指定足够的最小依赖版本是一个很好的警告,谢谢。
Processing dependencies for <my egg>
Installed distribution foo 2.0 conflicts with requirement foo==1.2