К сожалению, вы не можете ограничить реализацию с помощью маркеров среды, а метаданные пакета не определяют ни одного подходящего поля. Однако реализация может быть ограничена с помощью тега языковой реализации в метаданных колеса; формат тега определен в PEP 425. Реализация CPython сокращена до cp
, python_requires = >=3
из вашей конфигурации подразумевает cp3
для полного тега. Установите тег в разделе [bdist_wheel]
в setup.cfg
:
[metadata]
...
[options]
...
[bdist_wheel]
python_tag=cp3
Это не специально для bdist_wheel
; любая подкоманда distutils
может иметь раздел в setup.cfg
, где можно сохранить параметры командной строки. Прочитайте Написание файла конфигурации установки, чтобы узнать об этом подробнее.
Чтобы ответить на ваш вопрос из комментариев:
Честно говоря, я даже не нашел онлайн-документацию по команде python-tag
. Я что-то упускаю?
Это действительно несколько скрыто; документы wheel
не содержат ссылок на параметры bdist_wheel
. Обычно вы перечисляете их с помощью python setup.py bdist_wheel --help
(как и с любой другой подкомандой), но, поскольку у вас нет сценария установки, вы можете подделать его:
$ python -c "from setuptools import setup; setup()" bdist_wheel --help
Options for 'bdist_wheel' command:
...
--python-tag Python implementation compatibility tag (default: 'py3')
Созданный файл колеса теперь будет иметь суффикс cp3-none-any
(и тег cp3-none-any
в метаданных колеса) и будет отклонен другими реализациями:
$ pypy3 -m pip install meowpkg-0.0.1-cp3-none-any.whl
ERROR: meowpkg-0.0.1-cp3-none-any.whl is not a supported wheel on this platform.
Это также будет работать с исходными дистрибутивами, поскольку pip
всегда будет создавать колесо из sdist, совместимых с PEP 517 (и не прибегать к устаревшему setup.py install
), так что это также безопасно использовать с исходными дистрибутивами. Пример:
$ python -m build
$ pip uninstall -y wheel # for testing only
WARNING: Skipping wheel as it is not installed.
$ pip install dist/meowpkg-0.0.1.tar.gz
Processing ./dist/meowpkg-0.0.1.tar.gz
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Building wheels for collected packages: meowpkg
Building wheel for meowpkg (PEP 517) ... done
Created wheel for meowpkg: filename=meowpkg-0.0.1-cp3-none-any.whl size=1005 sha256=d87571afcdeda6be74a182b9e3e1ce6035a4aea4bb173c291900a85e53232983
Stored in directory: /home/oleg.hoefling/.cache/pip/wheels/1a/8c/43/90d6b484adcf2515d25503b0c47f14565cadf0e891a597e23e
Successfully built meowpkg
Installing collected packages: meowpkg
Attempting uninstall: meowpkg
Found existing installation: meowpkg 0.0.1
Uninstalling meowpkg-0.0.1:
Successfully uninstalled meowpkg-0.0.1
Successfully installed meowpkg-0.0.1
person
hoefling
schedule
23.01.2021
install-requires=this-package-requires-cpython;implementation_name != "cpython"
- person Anthony Sottile   schedule 21.01.2021python setup.py bdist_wheel --python-tag=cp3
создаст<pkg>-<ver>-cp3-none-any.whl
, который будет установлен только с внедрением CPython. Боюсь, что для исходных дистрибутивов вам придется прибегнуть к ручной проверке в скриптеsetup.py
. - person hoefling   schedule 22.01.2021bdist_wheel
мне все еще нуженsetup.py
(который является частью вашей командной строки). Я попытался запустить параметр сборки с помощьюpip wheel --build-option python-tag=cp3 .
, но, похоже, он не поддерживается для сборок PEP 517. Я предполагаю, что ответ заключается в том, что пока это просто невозможно. - person Bharel   schedule 22.01.2021setup.cfg
; просто добавьте раздел[bdist_wheel]
с записьюpython-tag=cp3
. Это, вероятно, также решит случай с sdist, еслиsetup.cfg
будет включено в исходный dist и использовано для построения колеса приpip install
ing; не уверен, поскольку не знаю, как создать sdist из декларативной конфигурации PEP 517. - person hoefling   schedule 23.01.2021build
, можно также построить sdist из чистая декларативная конфигурация сборки;setup.cfg
включен, аpip install
из исходного дистрибутива также работает, как и ожидалось. - person hoefling   schedule 23.01.2021[bdist_wheel]
? Я никогда не обходил это стороной. Не могли бы вы добавить источник документации или способ, которым вы его нашли, вместе со своим ответом? Буду признателен. Напишите как ответ, чтобы я мог принять это :-) - person Bharel   schedule 23.01.2021python-tag
. Я что-то упускаю? - person Bharel   schedule 23.01.2021setup.cfg
; вы можете добавлять разделы для любой подкоманды, не толькоbdist_wheel
. Что касается самих опций, то здесь становится сложно - единственный известный мне способ проверить их - этоpython setup.py bdist_wheel --help
:-( По этому вопросу также отсутствуют соответствующие документы. Рад, что смог помочь! Добавлю правильный ответ завтра. - person hoefling   schedule 23.01.2021Programming Language :: Python :: Implementation :: CPython
. На самом деле это не имеет значения, но, может быть, кто-то полагается на эти классификаторы. - person sinoroc   schedule 23.01.2021