我如何让virtualenv更喜欢本地库而不是全局库

con*_*lee 22 python virtualenv

我需要在没有root访问权限的大服务器上使用python.我想使用比在机器上全局安装的numpy更新版本的numpy. virtualenv是为此目的而设计的,我创建了我的虚拟环境并使用以下命令激活它:

virtualenv my_personal_python
source my_personal_python/bin/activate
Run Code Online (Sandbox Code Playgroud)

然后我安装了我感兴趣的库的新版本

pip install numpy==1.6.0
Run Code Online (Sandbox Code Playgroud)

问题是,当我现在导入numpy时,它仍然导入过时的全局版本,而不是虚拟环境my_personal_python/lib/python2.6/site-packacges目录中的一个安装.

我已经知道一个可能的解决方案, - no-site-packages标志,如:

virtualenv --no-site-packages my_personal_python
Run Code Online (Sandbox Code Playgroud)

当我使用这个标志时,导入就像我想要的那样.但我不想使用这个标志,因为我不想在本地重新安装所有软件包,我只想覆盖其中的几个.

(我使用的是python 2.6,virtualenv 1.6.1,我的机器上的PYTHONPATH变量没有设置.)

更新 即使我将site-packages目录从虚拟环境添加到python路径的开头,也不会从此位置导入numpy(尽管从此位置导入其他包).也许这个问题特定于numpy,一般不会出现包.

Mic*_*lon 8

仔细检查一下.

which python

which pip

现在你确定你正在运行正确的,启动python和:

import sys
print "\n".join(sys.path)
Run Code Online (Sandbox Code Playgroud)

然后退出python并键入,echo $PATH然后echo $PYTHONPATH 我怀疑问题是可见的,如果你不能通过设置修复它,PYTHONPATH那么你可以用site模块做.