命令行界面

Dask 提供了一个 dask 可执行文件作为命令行界面。Dask 的 CLI 设计为可扩展的,允许 Dask 生态系统中的其他项目(例如 distributed)添加子命令。

内置命令

dask 带有以下命令。

dask info

有关您的 dask 安装的信息。

dask info [OPTIONS] COMMAND [ARGS]...

versions

打印与 Dask 相关的项目的版本信息。

dask info versions [OPTIONS]

dask docs

在网页浏览器中打开 Dask 文档 (https://docs.dask.org.cn/)。

dask docs [OPTIONS]

扩展 Dask CLI

注意

本节适用于希望将其库与 dask CLI 集成的库作者。

第三方包可以通过入口点(entry points)和 Click 扩展 dask 命令行工具。Dask 将发现以 dask_cli 命名空间注册的 click.Commandclick.Group 对象。下面是两个示例,它们通过向项目添加 dask_cli 入口点来增强 dask CLI。

Click 提供了关于编写命令的优秀文档;关于入口点的更多文档可在以下位置找到:

示例:PEP-621

PEP-621 以来,如果启动新项目,向 Python 项目添加入口点的规范方法是使用 [project.entry-points] 表在 pyproject.toml 文件中。这种方法应能被任何与 PEP-621project 配置兼容的 Python 构建系统识别。 HatchFlitsetuptools(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
    """,
)