的virtualenv:Specifing哪些软件包使用全系统VS本地[复制](virtualenv

2019-07-18 20:58发布

可能重复:
让virtualenv中从全局站点包继承特定的包

有没有一种方法来创建virtualenv Python和指定应该从全系统的安装过程中使用了哪些软件包 (继承),以及哪些应该从全系统安装忽略?

更具体地讲,说,例如,有一个系统 -宽安装:

numpy
scipy
matplotlib

我想创建一个虚拟环境,使得:

  • 采用的全系统安装numpyscipy
  • 忽略全系统matplotlib ,并让我安装/升级的是我自己的版本 (与pip -U matplotlib )。

这可能吗?

Answer 1:

要做到这一点最简单的方法是创建一个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]