Условие версии в python_requires

#python #setuptools #setup.py #python-wheel

Вопрос:

У нас есть пакет, который работает на версии 2.7 и после версии 3.8, нам нужно сохранить 2.7, чтобы обеспечить поддержку пользователей, которые не переехали, но когда я делаю это в setup.py:

 python_requires="== 2.7.*, >= 3.8"
 

это не работает, когда я устанавливаю сгенерированный файл колеса в 3.8.11, в нем говорится:

 ERROR: Package 'mypkg' requires a different Python: 3.8.11 not in '==2.7.*,>=3.8'
 

почему 3.8.11 бы и нет >= 3.8 ? как это можно исправить?

Ответ №1:

Это связано с тем, что запятая , действует как логический оператор «и» в спецификаторах версий Python, и ни одна версия не может соответствовать обоим == 2.7.* и >= 3.8 одновременно.

Поскольку, к сожалению, в спецификаторах версий нет оператора «или», вам придется обойти это, полностью исключив известные несовместимые версии между двумя совместимыми диапазонами:

 python_requires=">= 2.7, != 3.0.*, != 3.1.*, != 3.2.*, != 3.3.*, != 3.4.*, != 3.5.*, != 3.6.*, != 3.7.*"