有没有办法配置easy_install以避免在安装失败时再次下载文件?
pip(http://pypi.python.org/pypi/pip/)是easy_install工具的直接替代品,可以做到这一点.
只需运行easy_install pip
并将环境变量设置为PIP_DOWNLOAD_CACHE
您希望pip存储文件的路径.请注意,缓存不适用于从源代码存储库(例如svn/git/hg/bzr)签出的依赖项.
然后使用pip install
而不是easy_install
这是我使用pip的解决方案,管理甚至安装二进制包并可在Linux和Windows上使用.根据要求,它将限制从PyPi下载到最小值,并作为额外的奖励,在Linux上,它允许加速重复安装包通常需要编译到几分之一秒.
安装只需几步,但我觉得值得做.
创建pip配置文件创建pip配置文件(在linux上:〜/ .pip/pip.conf,在Windows%HOME%\ pip\pip.ini上)
我的内容有这样的内容:
[global] download-cache = /home/javl/.pip/cache find-links = /home/javl/.pip/packages [install] use-wheel = yes [wheel] wheel-dir = /home/javl/.pip/packages填充
cache
目录 - 自动进行
该cache
目录将得到缓存从PyPI将每次下载的数据的版本,PIP试图从PyPI中得到一些包.它很容易得到它(不需要特别小心),但请注意,从点的角度来看,这些只是从PyPi下载的兑现数据,而不是包,所以如果你使用一个选项--no-index
,它将无法工作.
pip install --download
填充packages
目录
该packages
目录是地方把真正的包文件.例如,对于我最喜欢的包plac
,我会这样做:
$ pip install --download~/.pip/packages plac
并且plac包文件将出现在该目录中.您甚至可以使用-r requirements.txt
文件一次为多个包执行此操作.
这些包甚至可以使用$ pip install --no-index
.
例如,lxml
包需要补充,下载和编译可能需要45秒到几分钟.使用滚轮格式,您可以在这里节省很多.
安装wheel
工具,如果还没有:
$ pip install wheel
创建轮子lxml
(假设,您已经设法lxml
在过去安装- 它需要安装系统中的一些库):
$ pip wheel lxml
这过度下载,编译,但最终导致lxml whl
文件在packgages
dir中.
自那时候起
$ pip install lxml
甚至更快
$ pip install --no-index lxml
将花费一小部分,因为它使用轮式格式化包.
从Window setup exe包中准备轮包(注意:这甚至可以在Linux机器上准备,没有编译,只有一些从exe文件重新打包成whl
.)
从pypi下载包的exe形式,例如:
$ wget https://pypi.python.org/packages/2.7/l/lxml/lxml-3.2.3.win32-py2.7.exe#md5=14ab978b7f0a3382719b65a1ca938d33 $ dir lxml-3.2.3.win32-py2.7 .可执行程序
将其转换为 whl
$ wheel convert lxml-3.2.3.win32-py2.7.exe $ dir lxml-3.2.3.win32-py2.7.exe lxml-3.2.3-cp27-none-win32.whl
测试一下:
$ pip install lxml
要么
$ pip install --no-index lxml
应该很快.
请注意,这wheel convert
可以对鸡蛋格式化的包进行完全相同的转换.
easy_install
和setup.py install
重用你的packages
目录
easy_install
并且$ python setup.py install
似乎没有提供下载缓存,但允许使用我们在我们的packages
目录中的包.
为此,请编辑以下两个工具的配置文件:
在Linux上: $HOME/.pydistutils.cfg
在Windows上: %HOME%\pydistutils.cfg
在我的情况下,我在这里/home/javl/.pydistutils.cfg
:
[easy_install] find_links = /home/javl/.pip/packages
pip install
当pip尝试安装包,声明依赖于其他包时,此配置甚至可以帮助某些调用情况.因为它委托这个任务来setup.py
调用,没有.pydistutils.cfg
配置它会从PyPi下载文件.
不幸的是,在这种情况下不支持滚轮格式(据我所知).