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_installsetup.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 缓存下载的文件的主要内容,如果未能解决你的问题,请参考以下文章

Windows下安装easy_install

摆脱 easy_install 消息::模块引用 __file__

python 安装easy_install和pip

Python如何安装模块

windows下面安装easy_install和pip教程

easy_install 和 pip