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
.)
скачайте 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
преобразовать его в
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.
К сожалению, формат колеса не поддерживается в этом случае (насколько я знаю).