setuptools
поддерживает это с помощью environment markers.
install_requires=[
'enum34;python_version<"3.4"',
'pywin32 >= 1.0;platform_system=="Windows"'
]
Использование этого подробно описано в official documentation. Основываясь на change log, был добавлен в версии 20.5, но реализация была нестабильной до v20.8.1 (это был всего лишь разрыв 15 дней).
Оригинал ответа (остается в силе, но может быть устаревшими в будущем):
setuptools
поддерживает это, используя в
extras_require
аргумента.
Формат следующий:
extras_require={
':python_version=="2.7"': ["mock"],
},
Он будет поддерживать другие операторы сравнения.
К сожалению, он не упоминается в documentation. При поиске ответов я нашел PEP-426, говоря о «маркерах окружающей среды». С этой фразой я был в состоянии найти setuptools ticket со следующим комментарием:
я успешно использовал маркеры имеют для селективных и декларативно требует зависимости. См. Пример backports.unittest_mock. Через «дополнительные функции» требуется mock, но только на Python 2. Когда я могу положиться на Setuptools 17.1, я могу изменить эту зависимость на python_version < "3.3"
.
Возможный дубликат [установить \ _requires в setup.py в зависимости от установленной версии Python] (https://stackoverflow.com/questions/6080646/install-requires-in-setup-py-depending-on- installed-python-version) – ederag