快速启动
您可以直接从 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 存储库中找到,其中包括自述文件:
inout
: File input and outputnaval
: Port of docopt naval examplealiases
: Command alias examplerepo
: Git-/Mercurial-like command line interfacecomplex
: Complex example with plugin loadingvalidation
: Custom parameter validation examplecolors
: Colorama ANSI color supporttermui
: Terminal UI functions demoimagepipe
: Multi command chaining demo
基本概念-创建命令
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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论