在pyvenv环境中调用正确的pip,python3.4
我用以下命令安装了一个新的pyvenv环境:
python3.4 -m venv env
source env/bin/activate
但是,当我输入 which pip
时,得到的结果是 /usr/bin/pip
。这说明系统全局的pip安装仍然在使用。如果我查看pyvenv的文档,它上面写着:
在3.4版本中更改:默认安装pip,增加了 --without-pip 和 --copies 选项
这确实是对的,当我尝试在我激活的环境中安装pip时,得到的结果是:
要求已经是最新的:pip在 ./env/local/lib/python3.4/dist-packages
我该如何确保在我激活的环境中调用pip时,使用的是pyvenv的pip呢?
3 个回答
这个问题在Ubuntu 14.10上已经解决了。
如果你在Centos6上用下面的命令安装了python 3.4:
yum install http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/python34u-3.4.2-1.ius.centos6.x86_64.rpm
你需要重新打开一个新的终端窗口(或者重新登录你的系统)。
对我来说这样是有效的。祝你好运。
看起来你(还有我在之前的回答中)遇到了一个错误的影响。在更新版本的pyvenv-3.4中,一切似乎都正常工作了。
$ pwd
~/test
$ pyvenv-3.4 myenv
$ source myenv/bin/activate
(myenv)$ which pip
~/test/myenv/bin/pip
我之前也遇到过类似的问题,问了我的网络主机(WebFaction),得到了很好的回复。下面是关于Python 3.4及以上版本中虚拟环境的pyvenv和pip的理解页面的总结。
看起来你不需要担心你的虚拟环境使用的是哪个pip。只要你的虚拟环境处于活动状态,任何包都会安装到里面,不管使用的是哪个pip。
关于Python 3.4的虚拟环境,有一点需要注意:如果某个包不支持Python的新“wheel”包格式,那么这个包就无法安装到虚拟环境目录里。不过,它仍然会和虚拟环境保持连接。
由于这个奇怪的情况,我决定使用virtualenv而不是pyvenv-3.4,结果一切都按预期工作了。