Что можно добавить в файл setup.py
, чтобы предотвратить сбор и попытку установки пакета при использовании неподдерживаемой версии Python?Запретить установку пакета на старых версиях Python
Например magicstack
проект перечислены с кладом классификаторе:
Programming Language :: Python :: 3 :: Only
Так что ожидать следующее поведение, если pip --version
привязан к Python 2.7:
$ pip install magicstack
Collecting magicstack
Could not find a version that satisfies the requirement magicstack (from versions:)
No matching distribution found for magicstack
Но фактическое поведение является то, что pip собирает выпуск, загружает его, пытается его установить и терпит неудачу. Существуют и другие выпуски Python3, например, curio
, которые фактически устанавливают отлично - потому что setup.py
не использовал ничего конкретного Python 3 - только для отказа при импорте, когда используется только синтаксис Python 3. И я уверен, что есть пакеты, которые устанавливают ОК, импортируют ОК и, возможно, только сбой во время выполнения!
Каков правильный метод, чтобы указать поддерживаемые версии Python таким образом, который будет уважать пипс? Я нашел обходное решение, связанное с загрузкой только файла с колесом и отказом от загрузки дистрибутива .tar.gz, но мне было бы интересно узнать правильное исправление.
Edit: Как пип знать не для загрузки дистрибутива колеса, если Python/OS/архитектура не соответствует? Использует ли он только .whl filename convention или есть что-то более сложное, чем это происходит за кулисами? Можем ли мы каким-то образом предоставить метаданные исходному дистрибутиву, чтобы заставить pip делать правильные вещи с загрузкой .tar.gz?
Я не знаю, что это _right_ ответ ... но если 'magicstack' является python3 только потому, что' setup.py' не работает на python2.x, то кажется, что один из возможных способов сделать эту работу заставьте ваш 'setup.py' терпеть неудачу на неподходящих версиях python ... – mgilson
Hacky. Если pip привязан к неподдерживаемому интерпретатору Python, я не хочу, чтобы пакет был собран или загружен вообще, не говоря уже о попытке установки, выполнив 'setup.py'. – wim
Google раскрывает некоторые [предыдущие] (http://stackoverflow.com/questions/13924931/setup-py-restrict-the-allowable-version-of-the-python-interpreter) [вопросы] (http: // stackoverflow .com/questions/13385337/distribute-distutils-define-python-version) с ответами, говорящими о том, что ваша 'setup.py' проверяет версию Python. – user2357112