命令行界面

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 命名空间下的作为 entry points 的 click.Commandclick.Group 对象。下面你会找到两个示例,通过向项目添加 dask_cli entry point 来增强 dask CLI。

Click 提供了编写命令的极佳文档;关于 entry points 的更多文档可以在以下位置找到:

示例:PEP-621

PEP-621 以来,如果启动一个新项目,向 Python 项目添加 entry point 的标准方法是在 pyproject.toml 文件中使用 [project.entry-points] 表格。任何兼容 PEP-621project 配置的 Python 构建系统都应该支持此方法。HatchFlitsetuptools(版本 61.0.0 或更高)是三个使用 [project.entry-points] 并兼容 PEP-621 的构建系统示例。

例如,如果你的项目名为 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 发现的 entry point:

[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 打包机构 (PyPA) 建议使用 PEP-621,此处提供的 setuptools 说明适用于现有项目。

如果你的项目已经使用带有 setup.cfg 文件和/或 setup.py 文件的 setuptools,我们可以为上一节中介绍的相同 mycommand.cli:main 函数创建一个 entry point。如果使用 setup.cfg,可以通过向文件中添加以下代码块来注册 entry point:

[options.entry_points]
dask_cli =
    mycommand = mypackage.cli:main

或者可以直接在 setup.py 中注册 entry point,使用:

from setuptools import setup

setup(
    ...
    entry_points="""
        [dask_cli]
        mycommand=mypackage.cli:main
    """,
)