Принудительная версия python в setup.py

В настоящее время мы устанавливаем\устанавливаем некоторые пакеты в системе, указывая их версию и зависимости в файле setup.py в атрибуте install_requires. Для нашей системы требуется python 2.7. Иногда пользователи имеют несколько версий python, скажем, 2.6.x и 2.7, некоторые пакеты, которые, по его словам, уже доступны, но фактически находятся в системе, доступной в списке пакетов сайтов 2.6. Кроме того, некоторые пользователи имеют только 2.6, как принудительно использовать setup.py, или есть ли другой способ сказать, что у него есть только python 2.7, и все пакеты, которые мы хотим установить setup.py для обновления, всего 2.7. Для запуска нашего кода требуется минимум 2,7 на машине.

Спасибо! Santhosh

Ответ 1

Поскольку файл setup.py устанавливается через pippip сам запускается интерпретатором python), невозможно указать, какую версию Python использовать в файле setup.py.

Вместо этого посмотрите этот ответ на setup.py: ограничьте допустимую версию интерпретатора python который имеет базовое обходное решение для остановки установки.

В вашем случае код будет выглядеть следующим образом:

import sys
if sys.version_info < (2,7):
    sys.exit('Sorry, Python < 2.7 is not supported')

Ответ 2

Текущая лучшая практика (python_requires с этой статьи в марте 2018 года) заключается в том, чтобы добавить аргумент python_requires непосредственно к вызову setup() в setup.py:

from setuptools import setup

[...]

setup(name="my_package_name",
      python_requires='>3.5.2',
      [...]

Обратите внимание, что для этого требуется setuptools> = 24.2.0 и pip> = 9.0.0; см. документацию для получения дополнительной информации.