Есть ли способ настроить easy_install, чтобы избежать необходимости загружать файлы снова при сбое установки?
Загруженные файлы кеша Easy_install
Ответ 1
pip (http://pypi.python.org/pypi/pip/) является заменой для инструмента easy_install и может это сделать.
Просто запустите easy_install pip и установите переменную окружения PIP_DOWNLOAD_CACHE на путь, который вы хотите, чтобы сохранить файлы.
Обратите внимание, что кеш не будет работать с зависимостями, которые проверяются в репозитории исходного кода (например, svn/ git/hg/bzr).
Затем используйте pip install вместо easy_install
Ответ 2
Вот мое решение, использующее 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 будет загружаться кешированная версия данных, загружаемых с pypi каждый раз, pip пытается получить некоторый пакет из pypi. Легко получить его там (никакой особой осторожности не требуется), но обратите внимание, что с точки зрения pip это просто данные, загруженные из PyPi, а не пакеты, поэтому, если вы используете опцию --no-index, она не будет работа.
 pip install --download для заполнения packages dir
Директория packages - это место для размещения файлов реальных пакетов. Например. для моего любимого пакета 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 в прошлом - для этого требуется наличие некоторых libs в системе):
$ pip wheel lxml
Это происходит при загрузке, компиляции, но, наконец, результат в файле lxml whl находится в packgages dir.
С тех пор
$ pip install lxml
или даже быстрее
$ pip install --no-index lxml
займет часть секунды, так как использует пакет с отформатированным колесом.
Подготовьте пакет колес из пакета установки exe окна
(примечание: это может быть подготовлено даже на машине 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-ни-win32.whl 
-  Проверьте это: $pip install lxml 
или
$ pip install --no-index lxml
должен быть очень быстрым.
Обратите внимание, что wheel convert может выполнять точно такое же преобразование для пакетов с отформатированными яйцами.
 Пусть easy_install и setup.py install повторно используйте packages dir
 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.
К сожалению, формат колеса в этом случае не поддерживается (насколько мне известно).
