命令行界面
目录
命令行界面¶
Dask 提供了一个 dask
可执行文件作为命令行界面。Dask 的 CLI 设计为可扩展的,允许 Dask 生态系统中的其他项目(例如 distributed
)添加子命令。
扩展 Dask CLI¶
注意
本节适用于希望将其库与 dask
CLI 集成的库作者。
第三方包可以通过入口点(entry points)和 Click 扩展 dask
命令行工具。Dask 将发现以 dask_cli
命名空间注册的 click.Command
和 click.Group
对象。下面是两个示例,它们通过向项目添加 dask_cli
入口点来增强 dask
CLI。
Click 提供了关于编写命令的优秀文档;关于入口点的更多文档可在以下位置找到:
示例:PEP-621¶
自 PEP-621 以来,如果启动新项目,向 Python 项目添加入口点的规范方法是使用 [project.entry-points]
表在 pyproject.toml
文件中。这种方法应能被任何与 PEP-621
的 project
配置兼容的 Python 构建系统识别。 Hatch、Flit 和 setuptools(61.0.0 或更高版本)是三个兼容 PEP-621 并使用 [project.entry-points]
的构建系统示例。
例如,如果您的项目名为 mypackage
,并且在 mypackage
命名空间下包含一个 cli.py
模块,其内容如下:
# in the file mypackage/cli.py
import click
@click.command(name="mycommand")
@click.argument("name", type=str)
@click.option("-c", "--count", default=1)
def main(name, count):
for _ in range(count):
click.echo(f"hello {name} from mycommand!")
您可以通过将以下内容添加到 pyproject.toml
来创建一个 Dask 可以发现的入口点:
[project.entry-points."dask_cli"]
mycommand = "mypackage.cli:main"
安装 mypackage
后,mycommand
子命令应该可用于 dask
CLI
$ dask mycommand world
hello world from mycommand!
$ dask mycommand user -c 3
hello user from mycommand!
hello user from mycommand!
hello user from mycommand!
示例:setup.cfg 和 setup.py¶
注意
如果您正在启动一个新项目,Python Packaging Authority (PyPA) 的建议是使用 PEP-621,这些 setuptools 说明是为现有项目提供的。
如果您的项目已经使用带有 setup.cfg
文件和/或 setup.py
文件的 setuptools
,我们可以为上一节中介绍的同一个 mycommand.cli:main
函数创建一个入口点。如果使用 setup.cfg
,可以通过在文件中添加以下块来注册入口点:
[options.entry_points]
dask_cli =
mycommand = mypackage.cli:main
或者可以直接在 setup.py
中注册入口点,如下所示:
from setuptools import setup
setup(
...
entry_points="""
[dask_cli]
mycommand=mypackage.cli:main
""",
)