19

有没有办法配置 easy_install 以避免在安装失败时再次下载文件?

4

2 回答 2

17

13 年后更新easy_install2021 年 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

于 2009-02-11T20:47:23.357 回答
13

这是我使用 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 下载的兑现数据,而不是包,所以如果你使用 option --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

这会下载、编译,但最终会导致 lxmlwhl文件位于packages目录中。

自那时候起

$ pip install lxml

甚至更快

$ pip install --no-index lxml

将花费几分之一秒,因为它使用轮格式包。

从Window setup exe包中准备wheel包

(注:Linux 机器上也可以准备,不需要编译,只是从 exe 文件重新打包成whl.)

  1. 从 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 。可执行程序

  2. 将其转换为whl

    $ 轮子转换 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

  3. 测试它:

    $点安装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 下载文件。

不幸的是,在这种情况下不支持车轮格式(据我所知)。

于 2013-08-29T20:51:17.323 回答