我认为virtualenv应该封装并隐藏所有已经安装的包。但当我打字的时候
$sudo virtualenv -p /usr/bin/python3 testenv
$source ~/testenv/bin/activate
$sudo pip list
我得到:
^{pr2}$即使使用--local
参数。virtualenv坏了吗?在
同样,当我输入:$ which pip
时,我仍然得到:/home/jelikraftuser/testenv/bin/pip
,这似乎是正确的。在
阅读这篇文章的答案:pip installing in global site-packages instead of virtualenv
我发现了直接用$sudo ~/testenv/bin/pip list
运行pip的建议,它实际上起作用了,它只列出了2个包。但是,当我运行which pip
时,它将virtualenv中的pip列为将要运行的pip。
所以我现在有点迷路了。用完整路径调用pip列表会得到两个包的正确(小)列表,而调用没有完整路径的pip list会给我一个巨大的包列表,这是不正确的。那么,我该怎么办?在
当我在没有完整路径的情况下运行pip时,如何使它不将全局安装的包识别为安装在virtualenv中?在
好的,更新!这有点有趣:
(testenv)$ pip --version
pip 1.5.6 from /home/jelikraftuser/testenv/lib/python3.4/site-packages (python 3.4)
(testenv)$ sudo pip --version
pip 1.5.4 from /usr/lib/python2.7/dist-packages (python 2.7)
当我用sudo运行pip时,它运行一个,当我以非sudo运行它时,它运行一个不同的pip。为什么要这么做?如果我要安装一个包,我将以sudo的身份运行它,所以我需要sudo使用正确的pip。在
第二次更新:
正在读取此堆栈溢出:sudo changes PATH - why? 我发现在ubuntu上你不能改变sudo的路径变量,但是这仍然让我困惑,因为它以前是工作的。。。所以我还是很困惑。有人知道吗?以前,我可以在virtualenv中输入sudo pip list并得到一个几乎为空的列表。对你也一样吗?在
编辑3:它还能做什么:
当我运行sudo pip install --download-cache=~/.pip-cache -r piprequirements.txt
它说所有的东西都已经安装好了,但是当我输入python时我不能导入它们,但是当我以sudo的形式运行python时,我可以导入它们。因此超级用户可以看到全局安装的包,但我需要使用sudo安装包,这样我就无法安装已经全局安装的包。{su7}也试着跑。所以这肯定是ubuntu的问题,以及运行sudo时环境路径的变化。不是每个人都会遇到这个问题吗?我相信很多人都在用ubuntu,不是吗?在
目前没有回答
相关问题 更多 >
编程相关推荐