Не удалось найти версию, которая удовлетворяет требованию pytz

У меня проблема с установкой pytz в virtualenv.

Скачивание / распаковка pytz
Не удалось найти версию, которая удовлетворяет требованию pytz (из версий: 2009r, 2008b, 2009f, 2008c, 2007g, 2011g, 2005m, 2011e, 2007f, 2011k, ​​2007k, 2006k, 2006j, 2008h, 2008i, 2011e, 2008e, 2009e, 2009e, 2006g, 2011j, 2010l, 2005m, 2008i, 2005k, 2008g, 2007c, 2007i, 2009l, 2009r, 2006r, 2006j, 2011k, ​​2007d, 2006p, 2009i, 2009u, 2007i, 2009f, 2010g, 2008h, 2009a, 2007g, 2011e, 2006p, 2012b, 2010k, 2005r, 2007f, 2009l, 2009p, 2008c, 2009j, 2008g, 2010g, 2010h, 2011h, 2011h, 2010k, 2007c, 2007d, 2011d, 2009l, 2011l, 2011c, 2008a, 2005m, 2007k, 2009n, 2011d, 2010d, 2013b, 2012h, 2010e, 2012c, 2012d, 2012f, 2011n, 2011b, 2011j, 2008c, 2012j, 2007k, 2009f, 2009f, 2009d, 2010e, 2010b, 2013b, 2011d, 2009p, 2008h, 2005r, 2009i, 2009n, 2009a, 2010k, 2008g, 2006g, 2008b, 2012c, 2009i, 2007g, 2012c, 2010h, 2011n, 2012g, 2007d, 2008a, 2009u, 2012u, 2012g, 2010o, 2006p, 2010b, 2009u, 2012d, 2011k, ​​2012f, 2009a, 2007f, 2011h, 2010h, 2010l, 2009j, 2011g, 2009g, 2009g, 2005r, 2011c, 2012g, 2009g, 2012d, 2009j, 2010o, 2007o, 2007c, 2010g, 2006g, 2009d, 2010h, 2005k, 2006j, 2010b, 2009n, 2011g, 2011c, 2012b, 2009e, 2009d, 2011j, 2007j, 2007i, 2012j, 2010l, 2009r, 2012h, 2010e, 2010e, 2009p, 2008i, 2012f, 2009e, 2012b, 2011h, 2005k, 2008b, 2013b, 2011n, 2012j, 2004b)
Убираться...
Нет версий, соответствующих версии для pytz

Похоже, это проблема последней версии pip.

Есть ли обходной путь?

2 ответа

Решение

Эта ошибка возникает при установке pytz используя pip v1.4 или новее, из-за этого изменения в поведении:

Предварительные версии

Начиная с версии 1.4, pip будет устанавливать только стабильные версии, как указано в 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 Установите флажок, чтобы избежать такого поведения, но вы не захотите использовать этот флаг для установки требований всего проекта: некоторые пакеты могут иметь нестабильные предварительные версии, которые вам не нужны. В этом случае используйте поведение, описанное выше: если вы укажете номер версии "pre-release" для пакета, то pip будет искать "pre-release" версии пакета. Так что я добавил это к моему requirements.txt:

pytz>=2013b

Когда я обновлю свои пакеты, pip теперь будет правильно искать и устанавливать последнюю версию pytz,

Это было зарегистрировано как проблема #1204837 в системе отслеживания ошибок pytz и проблема #974 в системе отслеживания ошибок pip.

Стоп Нажмите: Как описано в отчете об ошибке PyTz, нумерация версий pytz теперь была изменена, например, на 2013.7 - поэтому после обновления до этой проблемы проблема больше не должна возникать.

Просто студент. Я изучал pytz(скачал, запустил, командную строку, затем попробовал IntelliJ, Project Structure, SDKS), и он не мог импортировать даже после удаления, переделывания файлов. Прочитайте список ошибок Launchtype. Я переключился на маятник. Это работало с предыдущим скриптом, который использовал pytz. Просто идея, а не прямой ответ. Первоначально сценарий был Бучалкой (преподавание сценария Python3 на уроке, и урок не будет работать с IntelliJ) с pytz. Адаптированный скрипт для маятника (Intellij,Project Structure, SDKS, +), чтобы я мог испытать часовой пояс. (нет отступов с этим блоком кода). Публикация, так как поиск по интернет-сайтам не выявил большой помощи в решении проблем. Маятник предложил альтернативу.

import pendulum
import datetime
country = "Europe/Paris"

tz_to_display = pendulum.timezone(country)
local_time = datetime.datetime.now(tz=tz_to_display)
print("The time in {} is {}".format(country, local_time))
print("UTC is {}".format(datetime.datetime.utcnow()))

Для тех, у кого больше знаний и более сложный сценарий, вот сайт маятника. https://pendulum.eustace.io/blog/a-faster-alternative-to-pyz.html На сайте существует библиотека для маятника. Это заявляет ( SÉBASTIEN EUSTACE)

Это связано с тем, что Pendulum сильно зависит от наличия атрибута Fold, который был представлен в Python 3.6.

Причина, по которой он работает в экосистеме маятника, заключается в том, что он перенес атрибут сгиба в классе DateTime.

Другие вопросы по тегам