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

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


person joeforker    schedule 17.02.2009    source источник
comment
Большинство приведенных ниже ответов не являются взаимоисключающими: используйте хотя бы один, но рассмотрите больше: кэш загрузки локально в вашей сборке, частный индекс только с пакетами, которые вам нужны (из вашего кэша загрузки), и, возможно, зеркало PyPI для MrTopf. ответ ниже. Обычно я делаю как минимум 2 из этих трех, когда планирую работать в автономном режиме более нескольких часов.   -  person sdupton    schedule 01.12.2011


Ответы (7)


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

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

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

person MrTopf    schedule 17.02.2009

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

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

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

person moraes    schedule 20.07.2010

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

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

person Stuart Axon    schedule 03.08.2010

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

  • внешние расширения, т.е. http://dist.plone.org/release/4.1.2/versions.cfg
  • яйца с какого-то дистрибутива, т.е. 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 в вашей конкретной сборке. После первого успешного запуска компоновки последующие запуски выполняются в автономном режиме ./bin/buildout -o.

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

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

person jensens    schedule 30.11.2011
comment
Это заставило меня начать, но опция -o, похоже, не работает (см. github.com/buildout/ buildout/issues/41). Я использовал параметр конфигурации install-from-cache = true при указании download-cache, как указано выше, и он работал, как и ожидалось. - person Symmetric; 04.06.2013

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

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

Другие зеркала на: http://www.pypi-mirrors.org/

person T. Kim Nguyen    schedule 27.05.2011

PyPI поддерживает зеркалирование с середины 2010 года http://pypi.python.org/mirrors.

person Richard Jones    schedule 08.04.2011

Для пакетов, которые вам нужно установить в вашем virtualenv обычно через requirements.txt (или могут быть индивидуально), вы должны переопределить свой pip.conf файл, обычно расположенный в ~/.pip/pip.conf

В вашем файле pip.conf:

[global]
index-url=https://pypi.python.org/simple/

[install]
trusted-host=pypi.python.org

Здесь вы можете указать URL-адрес вашей собственной версии pypi, если это необходимо.

Если вы хотите также использовать другой сервер pypi при создании с virtualenv по easy_install, вам необходимо переопределить файл pydistutils.cfg, обычно расположенный по адресу ~/pydistutils.cfg.

В файле pydistutils.cfg:

[easy_install]
index-url=https://pypi.python.org/simple/

Это обеспечит создание вашего venv с URL-адресом pypi, упомянутым в pydistutils.cfg. Здесь мы говорим easy_install использовать https://pypi.python.org/simple/. за создание venvs.

person Sanyam Khurana    schedule 03.08.2018