可能重复:
让virtualenv中从全局站点包继承特定的包
有没有一种方法来创建virtualenv
Python和指定应该从全系统的安装过程中使用了哪些软件包 (继承),以及哪些应该从全系统安装忽略?
更具体地讲,说,例如,有一个系统 -宽安装:
numpy
scipy
matplotlib
我想创建一个虚拟环境,使得:
- 采用的全系统安装
numpy
和scipy
- 忽略全系统
matplotlib
,并让我安装/升级的是我自己的版本 (与pip -U matplotlib
)。
这可能吗?
要做到这一点最简单的方法是创建一个virtualenv中包括系统网站包,然后安装您需要的版本:
$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3
您也可以事后通过检查的输出清理的virtualenv pip freeze
并删除你不想要的软件包。 (删除系统站点包与pip uninstall
并不再virtualenv中的较新版本的工作)
另一种方法是创建一个清洁的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
该命令可能会在非unixish环境略有不同。 该路径还取决于你所使用的系统上。 为了找出路径图书馆启动蟒蛇壳(不激活的virtualenv),导入模块,并检查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
,有可能比什么是与系统中安装新版本pip install --upgrade --ignore-installed numpy
。
文章来源: virtualenv: Specifing which packages to use system-wide vs local [duplicate]