Ответ 1
Эта ошибка возникает при установке pytz
с помощью pip v1.4 или new из-за этого изменения в поведении:
Предварительные версии
Начиная с версии 1.4, по умолчанию только установит стабильные версии, указанные PEP426. Если версия не может быть проанализирована как совместимая версия PEP426, то предполагается, что она является предварительным выпуском.
Если спецификатор Требований включает в себя версию до релиза или разработки (например,
>=0.0.dev0
), то pip предоставит для этого требования версии для предварительного выпуска и разработки. Это не включает флаг!=
.Команда
pip install
также поддерживает флаг--pre
, который будет включать установку предварительных выпусков и выпусков разработки.
Идентификаторы версии для пакета pytz
имеют формат 2013b
. PEP426 использует идентификаторы версий, описанные в PEP440, в котором указано, что
Имена открытых версий ДОЛЖНЫ соответствовать следующей схеме:
N[.N]+[{a|b|c|rc}N][.postN][.devN]
Поскольку версии pytz
, такие как 2013b
, не соответствуют этому формату, версия 1.4+ из pip обрабатывает все версии pytz
как версии до выпуска и не устанавливает их по умолчанию.
Если вы устанавливаете pytz
, вы можете использовать флаг --pre
, чтобы избежать такого поведения, но вы не захотите использовать этот флаг для установки всех ваших требований к проекту: некоторые пакеты могут иметь нестабильный предварительный выпуск версий, которые вам не нужны. В этом случае используйте описанное выше поведение: если вы укажете номер версии "до выпуска" для пакета, то pip будет искать "предварительные версии" версии пакета. Поэтому я добавил это в свой requirements.txt
:
pytz>=2013b
Когда я обновляю свои пакеты, pip теперь корректно будет искать и устанавливать последнюю версию pytz
.
Это было зарегистрировано как issue # 1204837 в трекерах для отслеживания ошибок pytz и вопрос № 974 в отладчике ошибок пика.
Стоп Нажмите. Как описано в отчете Отчет об ошибках PyTz, номер версии pytz теперь изменен на, например, 2013.7 - поэтому, как только вы обновились до этого, проблема больше не должна возникать.