在 pyproject.toml 中指定命令行脚本

pol*_*m23 47 python setup.py pyproject.toml

我正在尝试将 pyproject.toml 添加到一直使用 setup.py 的项目中,以便启用 pipx 的支持。我想指定项目包含在 pyproject.toml 中的命令行脚本,但我能找到的所有指南都给出了与诗歌一起使用的说明,而我没有使用诗歌。

我也不想指定模块的入口点 - 我已经有有效的命令行脚本,只想指定它们。

pyproject.toml 中是否有适当的位置来指定命令行脚本?

不确定这是否重要,但有问题的包裹是炸肉排

chr*_*own 61

2022 年 7 月更新:如果您的 TOML 文件使用 setuptools 作为其构建系统,setuptools 将很乐意创建并安装命令行脚本。例如,我的pyproject.toml文件是这样开始的:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
Run Code Online (Sandbox Code Playgroud)

pyproject.toml使用如下条目扩展文件,命名包、模块和入口点函数名称:

[project.scripts]
my-client = "my_package.my_module:main_cli"
Run Code Online (Sandbox Code Playgroud)

然后运行安装序列:

pip3 install .
Run Code Online (Sandbox Code Playgroud)

setuptools 会my-client在我的 Py3.9 虚拟环境的 bin 目录 (~/.virtualenvs/py39/bin) 中安装一个名为适当位置的 shell 脚本。

我正在做类似的事情,升级一个包含 的包setup.py,尽管我没有现有的脚本。通过重写使用,pyproject.toml我完全删除了旧setup.py文件。

FWIW我意识到OP要求一种安装现有脚本的方法,但我没有提供。此答案告诉 setuptools 创建并安装新脚本。

2023 年 2 月更新:感谢所有投票。如果您想走捷径来满足任意的管理期限,只需复制粘贴这个短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"
Run Code Online (Sandbox Code Playgroud)

  • 参考https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html (2认同)
  • @zerocog,“引用”并没有描述“project.scripts”,只是说它替换了已弃用的“script-files”。 (2认同)

Kir*_*hou 13

pyproject.toml 中是否有适当的位置来指定命令行脚本?

PEP566(元数据2.1)仅定义核心元数据规范。因此,答案取决于您的构建系统(注意:PEP518 定义了构建系统概念)。

如果您使用现有的构建工具(例如setuptoolspoetry和 ) ,则只有在该工具支持pyproject.toml中的命令行脚本 ( )flit时,您才可以考虑在pyproject.toml添加此类选项。当然,如果您有自己的构建工具,则需要实现一个解析器来解析pyproject.toml中的命令行脚本console_scripts

最后,您可以检查以下列表以了解哪些主要构建系统支持pyproject.toml中的命令行脚本 ( console_scripts)(2020 年/10 月):