Я использую buildout для автоматической загрузки и настройки многих зависимостей моей установки Plone. buildout более или менее использует easy_install для загрузки и установки набора яиц Python. Обычно это работает, но не работает, если какая-либо из зависимостей не может быть загружена или если я хочу, чтобы сборка нашла внутренний пакет, не подходящий для pypi. Как я могу настроить свою собственную локальную версию pypi для автоматического зеркалирования нужных мне пакетов? Будет ли он по-прежнему зависеть от сторонних серверов для пакетов, которые используют pypi для своих метаданных, но не для своего кода?
Как использовать easy_install и buildout, когда pypi не работает?
Ответы (7)
Вот инструкции по настройке собственного зеркала PyPi. Домашняя страница этого проекта находится здесь. Также кажется, что количество зеркал растет.
Инструкции по настройке собственного индекса пакетов см. в этой записи в блоге, где объясняется одно из решений. в конце. Затем вы также можете разместить там свои собственные внутренние пакеты. Преимущество также в том, что версии фиксируются таким образом. (Чтобы закрепить версии непосредственно в сборке, см. этот пост).
Если в PyPI есть только метаданные, а архив хранится где-то еще, вы, конечно, можете скопировать его и в свой индекс. Если вы просто используете зеркало PyPI, я предполагаю, что вам все еще нужен доступ к этим серверам.
Вы также можете использовать зеркало. Поместите это в раздел «[global]» файла «~/.pip/pip.conf»:
index-url = http://d.pypi.python.org/simple/
Это новая функция, анонсированная здесь.
На этой странице показано, как использовать альтернативное зеркало, упомянутое в сообщении @moraes, но для easy_install, buildout и virtualenv, а также для pip:
http://jacobian.org/writing/when-pypi-goes-down/ а>
В случае 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
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/
PyPI поддерживает зеркалирование с середины 2010 года http://pypi.python.org/mirrors.
Для пакетов, которые вам нужно установить в вашем 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
.