为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

缥缈止盈 2023-05-09 14:48:39
我正在尝试将 pyproject.toml 添加到一直在使用 setup.py 的项目中,以便启用 pipx 的支持。我想指定项目包含在 pyproject.toml 中的命令行脚本,但我能找到的所有指南都提供了诗歌的使用说明,我没有使用。我也不想指定模块的入口点——我已经有了可用的命令行脚本,只想指定它们。pyproject.toml 中是否有适当的位置来指定命令行脚本?不确定这是否重要,但有问题的包裹是cutlet。
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

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"


查看完整回答
反对 回复 2023-05-09
?
青春有我

TA贡献1784条经验 获得超8个赞

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

PEP566 (Metadata 2.1) 只定义了Core metadata specifications。因此,答案取决于您的构建系统(注意:PEP518 定义了构建系统概念)。

如果您使用现有的构建工具,例如setuptoolspoetryflit,您只能考虑在pyproject.toml中添加此类选项,前提是该工具支持pyproject.toml中的命令行脚本 ( console_scripts)。当然,如果你有自己的构建工具,你需要实现一个解析器来解析pyproject.toml中的命令行脚本

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

  • 设置工具:根据PEP621尚未实施

  • poetry:是的,这是实现的一部分。

  • flit:是的。


查看完整回答
反对 回复 2023-05-09
  • 2 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信