virtualenv:指定哪些软件包使用系统范围vs本地
可能重复:
让virtualenv从您的全球网站包inheritance特定的包
有没有办法为Python创build一个virtualenv
,并指定应该从系统范围的安装中使用(inheritance) 哪些软件包 ,以及从系统范围的安装中忽略哪些软件包?
更具体地说,例如说有一个系统范围的安装:
numpy scipy matplotlib
我想创build一个虚拟环境,以便:
- 使用
numpy
和scipy
的系统范围的安装 - 忽略系统级的
matplotlib
,并允许我安装/升级自己的版本 (使用pip -U matplotlib
)。
这可能吗?
最简单的方法是创build一个包含系统站点包的virtualenv,然后安装你需要的版本:
$ virtualenv --system-site-packages foo $ source foo/bin/activate $ pip install Django==1.4.3
您也可以通过检查 (使用pip freeze
的输出并删除不需要的软件包来清理virtualenv。pip uninstall
删除系统站点包不再适用于较新版本的virtualenv)
另一种方法是创build一个干净的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环境下,这些命令可能会略有不同。 path也取决于您正在使用的系统。 为了find启动python shell的path(没有激活的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']