Python命令行创建工具包——Click(1)

Click包学习(1)

简介

Click是一个Python软件包,用于以可组合的方式创建漂亮的命令行界面,所需的代码更少。它是“命令行界面创建工具包”。它是高度可配置的,但具有开箱即用的明智默认值。(对后端采用Python开发的程序员很友好)。

特点:

  • 命令的任意嵌套
  • 自动帮助页面生成
  • 支持在运行时延迟加载子命令

第一个简单示例:

import click

@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',help='The person to greet.')
#问候函数
def hello(count, name):
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo('Hello %s!' % name)

if __name__ == '__main__':
    hello()

代码运行结果

$ python click1.py --count=3
Your name: tyj
Hello tyj!
Hello tyj!
Hello tyj!

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

  Simple program that greets NAME for a total of COUNT times.

Options:
  --count INTEGER  Number of greetings.
  --name TEXT      The person to greet.
  --help           Show this message and exit.

安装click库

pip install click

常见方案:optparse和argparse

快速入门

您可以直接从PyPI获取该库:

pip install click

强烈建议将其安装到virtualenv中。

virtualenv

您可能要使用Virtualenv开发Click应用程序。

virtualenv解决什么问题?除了单击脚本之外,您可能还希望将其用于其他项目。但是您拥有的项目越多,就越有可能使用不同版本的Python本身,或者至少使用不同版本的Python库。让我们面对现实:库经常破坏向后兼容性,而且任何严肃的应用程序不太可能具有零依赖关系。那么,如果您的两个或多个项目具有相互依赖的关系,您该怎么办?

Virtualenv进行救援!Virtualenv启用了多个并行安装的Python,每个项目一个。它实际上并没有安装单独的Python副本,但确实提供了一种使不同项目环境保持隔离的聪明方法。让我们看看virtualenv是如何工作的。

如果您使用的是Mac OS X或Linux,则以下两个命令之一可能会为您工作:

$ sudo easy_install virtualenv

甚至更好:

$ pip install virtualenv --user

其中之一可能会在您的系统上安装virtualenv。甚至在包管理器中也可以。如果您使用Ubuntu,请尝试:

$ sudo apt-get install python-virtualenv

如果您使用的是Windows(或以上方法均无效),则必须先安装 pip。有关此的更多信息,请参阅安装pip。安装完成后,pip从上方运行命令,但不要使用sudo前缀。

安装virtualenv后,只需启动外壳并创建自己的环境即可。我通常在以下位置创建一个项目文件夹和一个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以及如何使用它构建简单的应用程序。它还探讨了如何使用子命令构建命令。

可在文档以及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颜色提供了良好的支持。如果输出流是文件,并且如果支持colorama,它将自动剥离ANSI代码,而ANSI颜色也将在Windows上运行。请注意,在Python 2中,该echo()函数不会解析字节数组中的颜色代码信息。有关 更多信息,请参见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在setuptools入口点中调用或其他调用:

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.

切换到setuptools

到目前为止,在您编写的代码中,文件末尾有一个块,如下所示:。传统上,这是独立Python文件的外观。使用Click,您可以继续执行此操作,但是可以通过setuptools找到更好的方法。if __name__ == '__main__':

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

第一个是setuptools自动为Windows生成可执行包装程序,因此您的命令行实用程序也可以在Windows上运行。

第二个原因是setuptools脚本可在Unix上与virtualenv一起使用,而无需激活virtualenv。这是一个非常有用的概念,可让您将满足所有要求的脚本捆绑到virtualenv中。

Click的功能非常强大,实际上,其余文档将假定您是通过setuptools编写应用程序的。

我强烈建议您 在阅读其余内容之前先阅读Setuptools集成一章,因为这些示例假定您将使用setuptools。

Setuptools集成

编写命令行实用程序时,建议将它们编写为通过setuptools分发的模块,而不是使用Unix shebangs。

你为什么想这么做?原因有很多:

  1. 传统方法的问题之一是Python解释器加载的第一个模块的名称不正确。这听起来像是一个小问题,但意义重大。

    第一个模块未按其实际名称调用,但解释器将其重命名为__main__。尽管这是一个完全有效的名称,但它意味着如果要从该模块导入另一段代码,它将以其真实名称第二次触发导入,并且突然之间,您的代码被导入了两次。

  2. 并非在所有平台上都易于执行。在Linux和OS X上,您可以在文件()的开头添加注释,并且脚本的工作方式类似于可执行文件(假设已设置了可执行位)。但是,这在Windows上不起作用。在Windows上,您可以将解释器与文件扩展名关联(例如,使所有文件的结尾都通过Python解释器执行),如果您想在virtualenv中使用脚本,则会遇到问题。#!/usr/bin/env python``.py

    实际上,在OS X和Linux中,在virtualenv中运行脚本也是一个问题。使用传统方法,您需要激活整个virtualenv,以便使用正确的Python解释器。不太用户友好。

  3. 仅当脚本是Python模块时,主要技巧才起作用。如果您的应用程序变得太大,并且您想开始使用软件包,则会遇到问题。

简介

要将脚本与setuptools捆绑在一起,您所需要的只是脚本在Python包和setup.py文件中。

想象一下这个目录结构:

yourscript.py
setup.py

内容yourscript.py

import click

@click.command()
def cli():
    ""&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是两种在Windows系统下使用命令行创建Python虚拟环境的方法: 方法一: 1. 打开cmd.exe命令行工具。 2. 进入想要创建虚拟环境的目录下。 3. 输入以下命令: ``` python -m venv venv_name ``` 其中,venv_name为你想要创建的虚拟环境的名称。 4. 等待虚拟环境创建完成。 方法二: 1. 打开cmd.exe命令行工具。 2. 输入以下命令安装virtualenv: ``` pip install virtualenv ``` 3. 进入想要创建虚拟环境的目录下。 4. 输入以下命令创建虚拟环境: ``` virtualenv -p python版本 虚拟环境名称 ``` 其中,python版本为你想要使用的Python版本,虚拟环境名称为你想要创建的虚拟环境的名称。 5. 输入以下命令启动虚拟环境: ``` source 虚拟环境名称/bin/activate ``` 6. 当你需要退出虚拟环境时,输入以下命令: ``` deactivate ``` 以下是在macOS系统下使用Anaconda创建Python虚拟环境的方法: 1. 打开终端。 2. 输入以下命令安装Anaconda: ``` bash ~/Downloads/Anaconda3-2021.05-MacOSX-x86_64.sh ``` 其中,~/Downloads/Anaconda3-2021.05-MacOSX-x86_64.sh为你下载的Anaconda安装的路径。 3. 安装完成后,输入以下命令创建Python虚拟环境: ``` conda create -n 虚拟环境名称 python=python版本号 ``` 其中,虚拟环境名称为你想要创建的虚拟环境的名称,python版本号为你想要使用的Python版本号。 4. 输入以下命令激活虚拟环境: ``` conda activate 虚拟环境名称 ``` 5. 当你需要退出虚拟环境时,输入以下命令: ``` deactivate 虚拟环境名称 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值