默认情况下系统PIP而不是virtualenv PIP?
使用virtualenv几小时后关闭pip,我发现virtualenv激活后使用的PIP版本是全局PIP,而不是相对于该环境的PIP;这样如果你没有设置shell环境变量export PIP_RESPECT_VIRTUALENV=true
,pip会将任何新的软件包(例如pip install argparse)安装到全局范围,而不是只安装到virtualenv。默认情况下系统PIP而不是virtualenv PIP?
我希望PIP默认安装到virtualenv,如果这个virtualenv被激活。
有它没有背后是有原因的工作在默认情况下呀?
请参阅如何PIP_RESPECT_VIRTUALENV
作品的解释here。
这不是我第一次看到有人报告同样的问题。我不知道发生了什么,但有些人不鼓励使用source /path/to/venv/bin/activate
,因为它会弄乱你的$PATH
。
有这样一个点子总是会尊重你的virtualenv:不靠$PATH
。使用:
/path/to/venv/bin/pip install MYPACKAGE
这将是很好,找出发生了什么事,并与他人分享您的解决方案。同时,使用pip的绝对路径也可以。
当您创建的virtualenv中,activate
文件会有限制变量VIRTUAL_ENV
在您第一次创建的根目录的位置。然后在您source <your-venv>/bin/activate
时输出此变量。
因此,如果在创建virtualenv目录后移动virtualenv目录,则硬编码文件路径将不正确。
在文本编辑器只需打开<your-venv>/bin/activate
并确保VIRTUAL_ENV
设为您的virtualenv目录的新路径:
VIRTUAL_ENV="/Full/path/to/<your-venv>"
export VIRTUAL_ENV
再次运行source <your-venv>/bin/activate
之前。
那么你当然可以测试pip
与which pip
版本应该产生:
/Full/path/to/<your-venv>/bin/pip
而非/usr/bin/pip
或/bin/pip
等
FWIW:我使用的virtualenvs有自己的点子的副本安装在该virtualenv。 – delnan 2012-02-10 21:48:28
@delnan他们如何获得他们自己的点子副本? – bitcycle 2012-02-10 21:50:59
virtualenv的最新版本(1.4版以后)应该自动安装pip的每个env副本。你使用的是什么版本的virtualenv? – philofinfinitejest 2012-02-10 22:32:26