我正在使用我没有root权限的计算服务器,所以为了能够安装我想要的任何库,我为python 2.6创建了virtualenv
--system-site-packages
。
然后,在虚拟环境中,我安装了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_resources.require('numpy==1.8.2')
,但我收到了错误:
pkg_resources.VersionConflict: (numpy 1.3.0 (/usr/lib64/python2.6/site-packages), Requirement.parse('numpy==1.8.2'))
在查看系统的virt2/lib64/python2.6/site-packages
文件夹之前,有没有办法告诉虚拟环境在虚拟/usr/lib64/python2.6/site-packages
文件夹中查找库?
答案 0 :(得分:0)
很可能你被issue #461咬了,而且目前(截至2014年8月)你无法升级任何系统继承的包,因为virtualenv
的路径是在任何系统路径之后排序的在sys.path
内。
你的解决方法是将(通常)最后一个sys-path条目移到上面的一个位置:
使用python-code重新排序sys.path
。例如,假设你的virtualenv site-packages
的索引是最后一个,你必须确保以下代码运行在任何其他代码之前:
import sys; sys.path.insert(0, sys.path.pop(-1))
在执行python-interpreter之前类似地修改你的PYTHONPATH
环境变量(参见question #10738919和)。