在pythonvirtualenv中处理几个包版本
我使用的计算服务器没有root权限,因此为了能够安装我想要的任何库,我为python 2.6创建了一个带有在pythonvirtualenv中处理几个包版本,python,numpy,virtualenv,Python,Numpy,Virtualenv,我使用的计算服务器没有root权限,因此为了能够安装我想要的任何库,我为python 2.6创建了一个带有--系统站点包的virtualenv 然后,在虚拟环境中,我安装了numpy版本1.8.2,因为系统numpy版本(1.3.0)对于我的要求来说太旧了: numpy-1.3.0-主动开发(/usr/lib64/python2.6/site-packages) numpy-1.8.2-非活动 我需要--system site packages选项,因为我正在使用一些无法在虚拟环境中安装的系统库
--系统站点包的virtualenv
然后,在虚拟环境中,我安装了numpy版本1.8.2,因为系统numpy版本(1.3.0)对于我的要求来说太旧了:
numpy-1.3.0-主动开发(/usr/lib64/python2.6/site-packages)
numpy-1.8.2-非活动
我需要--system site packages
选项,因为我正在使用一些无法在虚拟环境中安装的系统库。但是,我无法告诉虚拟环境使用最新版本的numpy
有人知道如何在虚拟环境中选择1.8.2版吗?我尝试了pkg\u资源。require('numpy==1.8.2')
但是我得到了错误:
pkg_resources.VersionConflict:(numpy 1.3.0(/usr/lib64/python2.6/site packages),Requirement.parse('numpy==1.8.2'))
在查看系统的/usr/lib64/python2.6/site packages
文件夹之前,是否有某种方法可以告诉虚拟环境在virtualvirt2/lib64/python2.6/site packages
文件夹中查找库?您可能已经被咬过,并且目前(截至2014年8月)您无法升级任何系统继承的包,因为virtualenv
的路径排列在sys.path
中的任何系统路径之后
您的解决方法是将(通常)最后一个sys path条目移到上方一个位置:
- 使用python代码重新排序
sys.path
,例如,假设virtualenv的站点包的索引是最后一个,您必须确保以下代码在任何其他代码之前运行:
import sys; sys.path.insert(0, sys.path.pop(-1))
- 在执行python解释器之前,类似地修改环境变量(请参见和)
可能使用pip,我不确定pkg_的资源,您到底是如何在VirtualNV中安装numpy的?您应该能够~$pip安装-I numpy==1.8.2
(可能需要-I
,以便告诉pip
忽略已安装的系统范围的numpy)。在VirtualNV中调用~$python-c“import numpy;print numpy.\uuuu version\uuuuuuu,numpy.\uuuu file\uuuuuu”
时会得到什么输出?