[英]Deal with several package versions in python virtualenv
我正在使用没有root特权的计算服务器,因此为了能够安装所需的任何库,我为python 2.6创建了带有--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_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'))
在查看系统的/usr/lib64/python2.6/site-packages
文件夹之前,是否可以通过某种方法告诉虚拟环境在虚拟virt2/lib64/python2.6/site-packages
文件夹中查找库?
您可能已被问题461咬伤,并且当前(截至2014年8月)您不能升级任何系统继承的程序包,因为virtualenv
的路径是在sys.path
任何系统路径之后排序的。
您的解决方法是将(通常)最后一个sys-path条目移至上方一个位置:
例如,假设您的virtualenv site-packages
的索引是最后一个,则用python代码重新排序sys.path
,您必须确保以下代码在任何其他代码之前运行:
import sys; sys.path.insert(0, sys.path.pop(-1))
在执行python解释器之前,类似地修改您的PYTHONPATH
环境变量(请参阅问题#10738919和)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.