我需要在没有 root 访问权限的大型服务器上使用 python。我想使用比机器上全局安装的更新版本的 numpy。 virtualenv
正是为此目的而设计的,我创建了我的虚拟环境并使用以下命令激活它:
virtualenv my_personal_python
source my_personal_python/bin/activate
然后我安装我有兴趣使用的新版本的库
pip install numpy==1.6.0
问题是,当我现在导入 numpy 时,它仍然导入过时的全局版本,而不是虚拟环境中的 my_personal_python/lib/python2.6/site-packacges
中安装的版本。目录。
我已经知道一种可能的解决方案,即 --no-site-packages 标志,如下所示:
virtualenv --no-site-packages my_personal_python
当我使用这个标志时,导入会按照我的意愿进行。但我不想使用这个标志,因为我不想在本地重新安装所有包,我只想覆盖其中的几个。
(我使用的是python 2.6,virtualenv 1.6.1,我机器上的PYTHONPATH变量没有设置。)
更新即使我将虚拟环境中的 site-packages 目录添加到 python 路径的开头,numpy 也不会从这个位置导入(尽管其他包是从这个位置导入的) .也许这个问题是 numpy 特有的,一般不会出现在包中。
最佳答案
仔细检查几件事。
哪个python
哪个点
现在你确定你运行的是正确的,启动 python 并:
import sys
print "\n".join(sys.path)
然后退出 python 并输入 echo $PATH
后跟 echo $PYTHONPATH
我怀疑这个问题会很明显,如果你不能通过设置 PYTHONPATH
来解决它,那么你可以使用 site
模块来解决它。
关于python - 如何让 virtualenv 更喜欢它的本地库而不是全局库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6510034/