Easy_install кеш скачанных файлов

Есть ли способ настроить easy_install, чтобы избежать повторной загрузки файлов в случае сбоя установки?

2 ответа

Решение

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 до mininum, а в качестве дополнительного бонуса для 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 dir - идет автоматически

cache dir будет получать кэшированную версию данных, загружаемых из pypi каждый раз, pip пытается получить какой-либо пакет из pypi. Это легко получить (не требуя особой осторожности), но обратите внимание, что с точки зрения пипа, это просто наличные данные, загруженные из PyPi, а не из пакетов, поэтому в случае, если вы используете опцию --no-index, она не будет работать.

pip install --download заселять packages реж

packages dir - это место для размещения файлов реального пакета. Например, для моей любимой упаковки plac, Я бы сделал:

$ pip install --download ~ /.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 файл находится в packgages реж.

С того времени

$ pip install lxml

или даже быстрее

$ pip install --no-index lxml

займет долю секунды, поскольку он использует пакет в формате wheel.

Подготовьте пакет колеса из пакета установки Windows.

(примечание: это может быть подготовлено даже на Linux-машине, компиляции нет, только некоторая перепаковка из exe-файла в whl.)

  1. скачайте exe-форму пакета из pypi, например:

    $ 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.EXE

  2. преобразовать его в 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

  3. Попробуй это:

    $ 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.

К сожалению, формат колеса не поддерживается в этом случае (насколько я знаю).

Другие вопросы по тегам