Как использовать easy_install и buildout, когда pypi не работает?

Я использую buildout для автоматической загрузки и настройки многих зависимостей моей установки Plone. buildout более или менее использует easy_install для загрузки и установки кучи яиц Python. Обычно это работает, но это не работает, если какая-либо из зависимостей не может быть загружена или я хочу, чтобы buildout обнаружил, что внутренний пакет не подходит для pypi. Как я могу настроить собственную локальную версию pypi для автоматического зеркалирования пакетов, которые мне нужны? Будет ли он по-прежнему зависеть от сторонних серверов для пакетов, которые используют pypi для своих метаданных, но не для их кода?

Ответы

Ответ 1

Ниже приведены инструкции о том, как настроить собственное зеркало PyPi. Домашняя страница этого проекта здесь. Там также растет количество зеркал.

Инструкции по настройке собственного индекса пакета см. в этом сообщении в блоге, где в конце объясняется одно решение. Затем вы также можете разместить свои собственные внутренние пакеты. Преимущество также в том, что версии исправлены таким образом. (Чтобы установить привязки версий непосредственно в buildout, зайдите этот пост).

Если в PyPI есть только метаданные, и архив хранится где-то в другом месте, вы можете, конечно, скопировать его и в свой индекс. Если вы просто используете зеркало PyPI, я предполагаю, что вам все еще нужен доступ к этим серверам.

Ответ 2

Вы также можете использовать зеркало. Поместите это в раздел "[global]" в разделе "~/.pip/pip.conf":

index-url = http://d.pypi.python.org/simple/

Это недавняя функция, объявленная здесь.

Ответ 3

На этой странице показано, как использовать альтернативное зеркало, указанное в сообщении @moraes, но для easy_install, buildout и virtualenv, а также для pip:

http://jacobian.org/writing/when-pypi-goes-down/

Ответ 4

В случае zc.buildout: используйте свои локальные функции кеширования загрузки. В кеше в основном три вещи:

  • external extends, т.е. http://dist.plone.org/release/4.1.2/versions.cfg
  • яйца из некоторого distserver, то есть pypi
  • загрузки из zc.recipe.cmmi или подобных рецептов с использованием инфраструктуры загрузки, предоставляемой zc.buildout

Для всех трех мы должны настроить глобальную конфигурацию и установить папку кэша для расширений и одну для яиц и других загрузок.

В домашней папке создайте папку .buildout.

В этой папке создайте папки extends-cache и downloads

В .buildout создайте файл default.cfg с помощью:

[buildout]  
extends-cache = /home/USERNAME/.buildout/extends-cache 
download-cache = /home/USERNAME/.buildout/downloads

так что у вас есть:

.buildout/
├── default.cfg
├── downloads
└── extends-cache

Вот оно. Не забудьте переопределить эти две переменные из default.cfg в вашем конкретном buildout. После первого успешного запуска сборки последующие прогоны запускаются в автономном режиме ./bin/buildout -o.

Поскольку создание побочных эффектов происходит намного быстрее, если используется в автономном режиме, то есть когда новых загрузок не ожидается, но какая-то конфигурация изменилась

Кроме того, имеет смысл запустить свое собственное pypi-mirror. В качестве другого источника информации вам может быть интересна статья, которую я написал некоторое время назад по этой теме: http://bluedynamics.com/articles/jens/setup-z3c.pypimirror

Ответ 5

Настроить index в buildout.cfg, например

[buildout]
index = http://a.pypi.python.org/
find-links = 

Больше зеркал: http://www.pypi-mirrors.org/