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

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

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

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

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


缥缈止盈
浏览 405回答 2
2回答

一只名叫tom的猫

2022 年 7 月更新:如果您的 TOML 文件使用 setuptools 作为其构建系统,setuptools 将愉快地创建和安装命令行脚本。例如,我的pyproject.toml文件是这样开头的:[build-system]requires = ["setuptools>=61.0"]build-backend = "setuptools.build_meta"pyproject.toml使用这样的条目扩展您的文件,命名包、模块和入口点函数名称:[project.scripts]my-client = "my_package.my_module:main_cli"然后运行安装序列:pip3 install .setuptools 将在我的 Py3.9 虚拟环境的 bin 目录 (~/.virtualenvs/py39/bin) 中为我安装一个在适当位置命名的 shell 脚本my-client。我在做类似的事情,升级一个有 的包setup.py,虽然我没有现有的脚本。重写为 usingpyproject.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"

青春有我

pyproject.toml 中是否有适当的位置来指定命令行脚本?PEP566 (Metadata 2.1) 只定义了Core metadata specifications。因此,答案取决于您的构建系统(注意:PEP518 定义了构建系统概念)。如果您使用现有的构建工具,例如setuptools、poetry和flit,您只能考虑在pyproject.toml中添加此类选项,前提是该工具支持pyproject.toml中的命令行脚本 ( console_scripts)。当然,如果你有自己的构建工具,你需要实现一个解析器来解析pyproject.toml中的命令行脚本。最后,您可以查看以下列表以了解哪些主要构建系统支持pyproject.toml中的命令行脚本 ( console_scripts) (2020/Oct):设置工具:根据PEP621尚未实施poetry:是的,这是实现的一部分。flit:是的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python