2010-11-22 1 views
1

В прошлую пятницу я создал спецификацию RPM для своего проекта Django. RPM создает virtualenv, загружает зависимости через pip и помещает все в пакеты. Сегодня я узнал, что BeautifulSoup 3.2 выпущен. К счастью, у меня была версия BeautifulSoup, закрепленная в файле requirements.txt, поэтому я узнал из-за сбоя сборки.Как использовать метод развертывания на основе virtualenv без обновления для каждой версии восходящего потока?

Теперь совершенно другое дело: как мне избежать обновления материалов в будущем? BeautifulSoup удалил все предыдущие версии из PyPI, поэтому я не могу загрузить версию, на которую я фактически протестировал. Кэш загрузки pip здесь тоже не помогает, поскольку pip всегда пытается сначала проверить PyPI.

Можете ли вы порекомендовать что-то, чтобы избежать этой ситуации?

ответ

2

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

Если вы хотите создать надежный процесс сборки с помощью pip, вам действительно нужно отразить все пакеты, на которые вы положитесь локально. Это непросто сделать; вы можете использовать опцию pip --download (или ваш существующий кэш кэша) для получения всех пакетов tarball, а затем просто сбрасывать их в индексированном, обслуживаемом веб-каталогах и использовать -find-ссылки в вашем файле требований, чтобы указать пункт там (плюс --no-index, чтобы сказать, чтобы не использовать PyPI).

+0

Возможно, это так или, может быть, «местный свет пробки» - просто держать молнии вокруг. Благодарю. –