Как добавить тег Python в команду bdist_wheel с помощью setuptools? - PullRequest
0 голосов
/ 02 октября 2018

Допустим, у меня есть простая библиотека, которая использует setuptools для упаковки и распространения.Для библиотеки в этом случае также требуется минимальная версия Python 3.6, то есть мой setup.py будет выглядеть примерно так:

from setuptools import setup, find_packages

setup(
    name='something',
    version='0.0.1',

    description='description',
    long_description=long_description,

    # More metadata

    packages=find_packages(exclude=['tests', 'docs']),

    python_requires='>=3.6'
)

Теперь, когда я запускаю python setup.py bdist_wheel, я получаю файл с именем something-0.0.1-py3-none-any.whl.Как видно здесь, wheel игнорирует параметр python_requires в setuptools при определении тега Python для моего колеса (это должно быть py36, но это значение по умолчанию py3).Очевидно, я понимаю, что могу просто передать --python-tag py36 из командной строки, которая выполнит эту работу, но служба непрерывного развертывания, которую я использую для развертывания моей библиотеки, принимает только имя используемого мной дистрибутива (bdist_wheel).Поэтому я не могу передать никакие параметры командной строки.

После небольшого исследования я обнаружил, что могу наследовать от класса bdist_wheel и переопределить переменную-член python_tag, но в соответствии с колесом.README:

Следует отметить, что колесо не предназначено для использования в качестве библиотеки, и поэтому отсутствует стабильный общедоступный API.

Из-за этого я хочу избежать наследования от класса bdist_wheel, который может вынудить меня переписывать мой класс каждый раз, когда происходит какое-либо критическое изменение.

Есть ли альтернативный способ через setuptools, который позволяет мнепередать тег Python для колеса?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Каждый аргумент командной строки для каждой команды distutils может быть сохранен в файле конфигурации установки.Создайте файл с именем setup.cfg в том же каталоге, в котором находится ваш setup.py, и сохраните там пользовательскую конфигурацию bdist_wheel:

# setup.cfg
[bdist_wheel]
python-tag=py36

Теперь запуск python setup.py bdist_wheel будет по сути аналогичен запуску python setup.py bdist_wheel --python-tag py36.

Соответствующая статья в distutils документах: Запись файла конфигурации установки .

0 голосов
/ 02 октября 2018

Вы можете взломать что-то вроде

if 'bdist_wheel' in sys.argv:
    if not any(arg.startswith('--python-tag') for arg in sys.argv):
        sys.argv.extend(['--python-tag', 'py36'])

, но это, возможно, так же хрупко ...

...