Что мы можем поместить в файл setup.py
чтобы pip не собирал и не пытался установить пакет при использовании неподдерживаемой версии Python?
Например, magicstack
- это проект, перечисленный с помощью классификатора 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 таким образом, чтобы pip уважал? Я нашел обходной путь, включающий загрузку только файла колеса и отказывающийся загружать дистрибутив .tar.gz, но мне было бы интересно узнать правильное исправление.
Редактировать: Как pip узнает, что не нужно загружать дистрибутив колеса, если Python/os/архитектура не совпадает? Использует ли он просто соглашение о именах файлов .whl или есть что-то более сложное, чем то, что происходит за кулисами? Можем ли мы как-то передать метаданные в исходный дистрибутив, чтобы pip правильно делал с загрузками .tar.gz?