Easy_install 缓存下载的文件
Posted
技术标签:
【中文标题】Easy_install 缓存下载的文件【英文标题】:Easy_install cache downloaded files 【发布时间】:2010-10-06 11:27:55 【问题描述】:有没有办法配置 easy_install 以避免在安装失败时重新下载文件?
【问题讨论】:
【参考方案1】:13 年后更新:easy_install
已于 2021 年 1 月从 Python 中删除。python 包管理器是 pip
,它会缓存下载的包。
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 cant install binaries(_.egg files_)
。这在 Windows 平台上至关重要。【参考方案2】:
这是我使用 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 获取一些包。很容易得到它(不需要特别注意),但请注意,从 pip 的角度来看,这些只是从 PyPi 下载的兑现数据,而不是包,所以如果你使用选项--no-index
,它不会工作。
pip download
填充 packages
目录
packages
目录是放置真实包文件的地方。例如。对于我最喜欢的包裹plac
,我会这样做:
$ pip download --dest ~/.pip/packages plac
并且 plac 包文件将出现在该目录中。您甚至可以使用-r requirements.txt
文件一次对多个包执行此操作。
这些包甚至与$ pip install --no-index <something>
一起使用。
防止在Linux上重复编译同一个包
例如lxml
包需要编译,下载和编译可能需要 45 秒到几分钟。使用车轮格式,您可以在这里节省很多。
安装wheel
工具,如果你还没有的话:
$ pip install wheel
为lxml
创建***(假设您过去已成功安装lxml
- 它需要在系统中安装一些库):
$ pip wheel lxml
这会下载、编译,但最终导致 lxml whl
文件位于 packages
目录中。
从那时起
$ pip install lxml
甚至更快
$ pip install --no-index lxml
将花费几分之一秒,因为它使用车轮格式的包。
从Window setup exe包中准备wheel包
(注意:这个在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 $目录 lxml-3.2.3.win32-py2.7.exe
将其转换为whl
$ 轮转 lxml-3.2.3.win32-py2.7.exe $目录 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 尝试安装一个包并声明对其他包的依赖时,此配置甚至可能有助于 pip install
调用的某些情况。当它将此任务委托给 setup.py
调用时,如果没有 .pydistutils.cfg
配置,它将从 PyPi 下载文件。
不幸的是,在这种情况下不支持车轮格式(据我所知)。
【讨论】:
以上是关于Easy_install 缓存下载的文件的主要内容,如果未能解决你的问题,请参考以下文章