2015-02-09 3 views
6

PyPI может быть ненадежным. У меня было неудачное количество сборок Travis-CI, потому что pip не смог установить одно из моих требований (lxml - самый известный преступник).Каноническая замена для -use-mirror

Различные онлайн-ресурсы рекомендуют флаг --use-mirrors, который решил проблему для меня до сих пор. Однако, --use-mirrors является deprecated по ряду причин.

К сожалению, как упоминалось в ссылке, одной из основных причин удаления флага является то, что новый поддерживаемый CDN PyPI не должен иметь одинаковых проблем. Оно делает. У меня все еще есть проблемы с моими сборками, и я до сих пор не могу надежно установить пакеты с помощью пипа, если не использую --use-mirrors.

release notes для выпуска 1.5 на 2014-01-01 рекомендуем использовать один из флагов -i, -index-url или --extra-index-url. Что замечательно, за исключением ... Мы сталкиваемся с некоторыми из тех же проблем, что и у --use-mirrors, а именно, что этим зеркалам нельзя доверять.

PyPI mirrors list фактически удален, оставив нам unofficial mirrors. Таким образом, у меня остается выбор: продолжайте использовать --use-mirrors и надейтесь, что один из вышеперечисленных вопросов будет исправлен до того, как он будет удален, или выберите зеркало и надейтесь, что он работает и заслуживает доверия.

Есть ли широко распространенное и надежное зеркало? Или широко распространенная и надежная альтернатива? В принципе, как мне решить эту проблему?

+1

Обратите внимание, что travis поддерживает [кэширование] (http://docs.travis-ci.com/user/caching/), если вы можете использовать инфраструктуру на основе контейнеров. – o11c

ответ

2

Откровенно говоря, я никогда не сталкивался с проблемой, которую вы описываете, поэтому я не знаю, что делать, чтобы разрешить проблемы с публичным индексом pypi.

Однако, как правило; Я могу порекомендовать следующие, что мы используем при развертывании (как системы, которые мы развертываемые не имеют доступа к сети Интернет):

  1. Создание локального зеркала PyPi и публиковать свои пакеты там. Вы можете сделать это разными способами. Простой подход с basket или вы можете сделать то, что мы сделали, и создать ваше собственное pypi-зеркало (см.: How to roll my own pypi? для некоторых предложений).

  2. Использование wheel. Это то, к чему мы переходим, потому что процесс установки очень прост и не требует зависимости от других серверов.

Я знаю, что глобальный индекс pypi является большим удобством, но, как часть цепочки построения развертывания, я буду использовать его в качестве резервной копии; для одного он находится в сети, которую я не контролирую (следовательно, она может быть недостижимой или ненадежной); и, что более важно, моим системам может не потребоваться доступ к Интернету во время процесса сборки.

Смежные вопросы