Указание скриптов командной строки в pyproject.toml
Я пытаюсь добавить pyproject.toml в проект, который использует setup.py, чтобы включить поддержку pipx. Я хотел бы указать сценарии командной строки, которые проект включает в pyproject.toml, но все руководства, которые я могу найти, содержат инструкции по использованию с поэзией, которую я не использую.
Я также не хочу указывать точки входа в модули - у меня уже есть рабочие сценарии командной строки, и я просто хочу их указать.
Есть ли в pyproject.toml подходящее место для указания сценариев командной строки?
Не уверен, что это имеет значение, но это котлета.
2 ответа
Обновление, июль 2022 г.: если ваш файл TOML использует setuptools в качестве системы сборки, setuptools с радостью создаст и установит консольный скрипт. Например, мой файл начинается так:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
Дополните свой файл такой записью, указав имя пакета, модуля и функции точки входа:
[project.scripts]
my-client = "my_package.my_module:main_cli"
Затем запустите последовательность установки:
pip3 install .
И setuptools установит сценарий оболочки с именемmy-client
где-то подходящее, для меня в каталоге bin моей виртуальной среды Py3.9 (~/.virtualenvs/py39/bin).
Я делал то же самое, обновляя пакет с , хотя у меня не было существующих скриптов. С переписыванием на использование я отказался от старогоsetup.py
файл целиком.
FWIW Я понимаю, что ОП попросил способ установить существующие сценарии, которые я не предоставил. Этот ответ указывает setuptools создавать и устанавливать новые скрипты.
Обновление от февраля 2023 г.: спасибо за все голоса. Если вы срезаете углы, чтобы уложиться в произвольные сроки управления, просто скопируйте и вставьте это короткоеpyproject.toml
файл и настроить:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "my_client"
version = "1.2.3"
authors = [{name="Ubr Programmer", email="ubr@gmailington.com" }]
description = "Client for my awesome system"
readme = "README.md"
dependencies = ["cachetools","requests"]
requires-python = ">=3.9"
[project.scripts]
my-client = "my_package.my_module:main_cli"
[project.urls]
"Homepage" = "https://github.com/your_name_here/something"
"Bug Tracker" = "https://github.com/your_name_here/something/issues"
Есть ли в pyproject.toml подходящее место для указания сценариев командной строки?
PEP566 (Метаданные 2.1) определяет только основные спецификации метаданных. Таким образом, ответ зависит от вашей системы сборки (Примечание: PEP518 определяет концепцию системы сборки).
Если вы используете существующие инструменты сборки, такие как
setuptools
,
poetry
, и
flit
, вы можете рассмотреть возможность добавления таких параметров в pyproject.toml, только если этот инструмент поддерживает сценарии командной строки (console_scripts
) в pyproject.toml. Конечно, если у вас есть собственный инструмент сборки, вам нужно реализовать парсер для анализа сценариев командной строки в pyproject.toml.
Наконец, вы можете проверить список ниже, чтобы узнать, какая основная система сборки поддерживает сценарии командной строки (console_scripts
) в pyproject.toml (2020 / октябрь):
- setuptools: еще не реализовано в соответствии с PEP621
- поэзия: да, вот часть реализации.
- флит: да.