返回介绍

快速启动

发布于 2025-05-06 21:24:11 字数 5958 浏览 0 评论 0 收藏

您可以直接从 pypi 获取库:

pip install click

安装到 虚拟现实 强烈推荐。

虚拟现实

virtualenv 可能是您希望用于开发 Click 应用程序的工具。

virtualenv 解决了什么问题?除了您的 Click 脚本,您可能还想将它用于其他项目。但是项目越多,就越有可能使用不同版本的 python 本身,或者至少使用不同版本的 python 库。让我们面对现实:库经常会破坏向后兼容性,而且任何重要的应用程序都不太可能具有零依赖性。那么,如果您的两个或多个项目具有冲突的依赖关系,您该怎么做呢?

虚拟环境拯救!virtualenv 支持多个并排安装 python,每个项目一个。实际上,它并没有安装单独的 Python 副本,但它确实提供了一种聪明的方法来隔离不同的项目环境。让我们看看 virtualenv 是如何工作的。

如果您在 Mac OS X 或 Linux 上:

$ sudo pip install virtualenv

其中之一可能会在您的系统上安装 virtualenv。可能是在你的包裹管理器里。如果使用 Ubuntu,请尝试:

$ sudo apt-get install python-virtualenv

如果您在 Windows 上(或以上方法都不起作用),则必须安装 pip 第一。有关详细信息,请参阅 installing pip . 安装后,运行 pip 从上面命令,但没有 sudo 前缀。

一旦安装了 virtualenv,只需启动一个 shell 并创建自己的环境。我通常创建一个项目文件夹和一个 venv 文件夹内::

$ mkdir myproject
$ cd myproject
$ virtualenv venv
New python executable in venv/bin/python
Installing setuptools, pip............done.

现在,只要您想处理一个项目,就只需要激活相应的环境。在 OS X 和 Linux 上,执行以下操作:

$ . venv/bin/activate

如果您是 Windows 用户,则以下命令适用于您:

$ venv\scripts\activate

无论采用哪种方式,您现在都应该使用 virtualenv(注意 shell 的提示是如何更改以显示活动环境的)。

如果你想回到现实世界,使用以下命令:

$ deactivate

这样做之后,您的 shell 提示应该和以前一样熟悉。

现在,我们继续。输入以下命令以在 virtualenv 中激活 click::

$ pip install Click

几秒钟后,你就可以走了。

屏幕放映和示例

提供了一个屏幕广播,显示了 click 的基本 API 以及如何用它构建简单的应用程序。它还探讨了如何使用子命令构建命令。

Click 应用程序的示例可以在文档中找到,也可以在 Github 存储库中找到,其中包括自述文件:

基本概念-创建命令

Click 基于通过修饰符声明命令。在内部,高级用例有一个非修饰接口,但不鼓励高级使用。

通过将函数修饰为 Click 命令行工具 click.command() . 最简单的是,用这个修饰器修饰一个函数就可以使它成为一个可调用的脚本:

import click

@click.command()
def hello():
    click.echo('Hello World!')

发生的是,修饰符将函数转换为 Command 然后可以调用它:

if __name__ == '__main__':
    hello()

看起来像是:

$ python hello.py
Hello World!

以及相应的帮助页面:

$ python hello.py --help
Usage: hello.py [OPTIONS]

Options:
  --help  Show this message and exit.

回响

为什么这个例子使用 echo() 而不是普通的 print() 功能?这个问题的答案是,click 试图以同样的方式支持 python 2 和 python 3,并且即使在环境配置错误的情况下也非常健壮。Click 希望至少在基本级别上正常工作,即使一切都已完全中断。

这意味着 echo() 如果终端配置错误,而不是使用 UnicodeError .

作为一个额外的好处,从 click 2.0 开始,echo 函数也对 ansi 颜色有很好的支持。如果输出流是一个文件,它将自动删除 ansi 代码;如果支持 colorama,ansi 颜色也将在 Windows 上工作。注意,在 python 2 中, echo() 函数不分析来自 bytearray 的颜色代码信息。见 ANSI 颜色 更多信息。

如果不需要,也可以使用 print() 结构/功能。

嵌套命令

命令可以附加到其他类型的命令 Group . 这允许任意嵌套脚本。例如,下面的脚本实现了两个用于管理数据库的命令:

@click.group()
def cli():
    pass

@click.command()
def initdb():
    click.echo('Initialized the database')

@click.command()
def dropdb():
    click.echo('Dropped the database')

cli.add_command(initdb)
cli.add_command(dropdb)

如你所见, group() 装饰工的工作方式 command() 但创建了一个 Group 对象,它可以被赋予可以附加的多个子命令 Group.add_command() .

对于简单的脚本,还可以使用 Group.command() 改为装饰。上面的脚本可以这样编写:

@click.group()
def cli():
    pass

@cli.command()
def initdb():
    click.echo('Initialized the database')

@cli.command()
def dropdb():
    click.echo('Dropped the database')

然后调用 Group 在设置工具入口点或其他调用中:

if __name__ == '__main__':
    cli()

添加参数

要添加参数,请使用 option()argument() 装饰者:

@click.command()
@click.option('--count', default=1, help='number of greetings')
@click.argument('name')
def hello(count, name):
    for x in range(count):
        click.echo('Hello %s!' % name)

它是什么样子的:

$ python hello.py --help
Usage: hello.py [OPTIONS] NAME

Options:
  --count INTEGER  number of greetings
  --help           Show this message and exit.

切换到设置工具

在迄今为止编写的代码中,文件末尾有一个块,如下所示: if __name__ == '__main__': . 这是传统上独立的 python 文件的外观。通过 Click,您可以继续这样做,但有更好的方法通过设置工具。

有两个主要(以及更多)原因:

第一个问题是,安装工具会自动为 Windows 生成可执行包装器,因此命令行实用程序也可以在 Windows 上工作。

第二个原因是安装工具脚本在 Unix 上使用 virtualenv,而不必激活 virtualenv。这是一个非常有用的概念,它允许您将脚本与所有需求捆绑到一个虚拟环境中。

Click 完全可以使用它,事实上,文档的其余部分将假定您正在通过 SetupTools 编写应用程序。

我强烈建议您看看 设置工具集成 在阅读其他章节之前,作为示例,假设您将使用安装工具。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。