Указание скриптов командной строки в 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 / октябрь):

Другие вопросы по тегам