—extra-search-dir 参数

创建新的隔离环境时,virtualenv会安装setuptools,distribute或是pip包管理器。一般情况下,它们都会从 Python Package Index (PyPI) 中寻找并安装最新的包。但在一些特定情况下,我们并不希望如此。例如,你在部署virtualenv时既不想从网上下载,也不想从PyPI中获取包。

做为替代方案,可以让setuptools,distribute或是pip搜寻文件系统,让virtualenv使用本地发行包而不是从网上下载。只要象下面这样传入一个或多个 —extra-search-dir 参数就能使用该特性:

  1. $ virtualenv --extra-search-dir=/path/to/distributions ENV

/path/to/distributions 路径指向某个包含setuptools/distribute/pip发行包的目录。Setuptools发行包必须是 .egg 文件,distribute和pip发行包则是 .tar.gz 原代码压缩包。

如果本地路径没有找到相应的发布包,virtualenv还是会从网上下载。

要想确保不会从网上下载任何发行包,就使用 —never-download 参数,如下:

  1. $ virtualenv --extra-search-dir=/path/to/distributions --never-download ENV

这样,virtualenv不会从网上下载任何发行包。而只搜索本地发行包,如果没有找到要安装的包,就返回状态码1。virtualenv会按照如下顺序搜索发行包位置:

- 当前目录- virtualenv.py所在目录- virtualenv.py所在目录下的 virtualenv_support 目录- 如果实际运行的脚本名并不是virtualenv.py (换句话说,就是你的自定义启动脚本),会搜索实际安装的virtualenv.py所在目录下的virtualenv_support 目录。