可能重复:
Make virtualenv inherit specific packages from your global site-packages
有没有办法为Python创建virtualenv
,从系统范围的安装中指定应该使用(继承)哪些包,以及从系统中忽略哪些包全安装?
更具体地说,例如,有一个系统 - 范围的安装:
numpy
scipy
matplotlib
我想创建一个虚拟环境:
numpy
和scipy
matplotlib
,然后让我安装/升级我自己的版本(使用pip -U matplotlib
)。 这可能吗?
答案 0 :(得分:65)
最简单的方法是创建一个包含系统站点包的virtualenv,然后安装所需的版本:
$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3
您也可以通过检查(删除带有{{1}的系统站点软件包}不再适用于较新版本的virtualenv)pip freeze
的输出并删除不需要的软件包来清理virtualenv。
另一种方法是创建一个干净的virtualenv并链接您需要的部分:
pip uninstall
在非unixish环境中,命令可能略有不同。路径还取决于您使用的系统。为了找到库的路径,启动python shell(没有激活的virtualenv),导入模块并检查$ virtualenv --no-site-packages foo
$ source foo/bin/activate
$ ln -s /usr/lib/python2.7/dist-packages/PIL* $VIRTUAL_ENV/lib/python*/site-packages
。 e.g。
module_name.__path__
此外,如果您使用Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> PIL.__path__
['/usr/lib/python2.7/dist-packages/PIL']
创建了virtualenv,则可以安装比使用--system-site-packages
的系统更新的版本。