virtualenv:指定系统范围与本地使用的软件包

时间:2013-01-28 21:20:43

标签: python virtualenv pip

  

可能重复:
  Make virtualenv inherit specific packages from your global site-packages

有没有办法为Python创建virtualenv从系统范围的安装中指定应该使用(继承)哪些包,以及从系统中忽略哪些包全安装?

更具体地说,例如,有一个系统 - 范围的安装:

numpy
scipy
matplotlib

我想创建一个虚拟环境:

  • 使用numpyscipy
  • 的系统范围安装
  • 忽略系统级matplotlib,然后让我安装/升级我自己的版本(使用pip -U matplotlib)。

这可能吗?

1 个答案:

答案 0 :(得分:65)

最简单的方法是创建一个包含系统站点包的virtualenv,然后安装所需的版本:

$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3

您也可以通过检查pip freeze的输出并删除不需要的软件包来清理virtualenv。(删除带有{{1}的系统站点软件包}不再适用于较新版本的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的系统更新的版本。