迅速に起動する¶
PyPIから直接取得することができます:ライブラリを取得します
pip install click
設置されています 仮想人. 強くお勧めします。
仮想人.¶
Virtualenvを使用してClickアプリケーションを開発することを望むかもしれません。
Viralenvはどんな問題を解決しましたか?Clickスクリプト以外に、あなたは他のプロジェクトにも使用したいかもしれません。しかし、あなたが持っているプロジェクトが多ければ多いほど、異なるバージョンのPython自体を使用するか、または少なくとも異なるバージョンのPythonライブラリを使用することが可能になります。ライブラリは常に後方互換性を破壊しており,どの深刻なアプリケーションでもゼロ依存関係にある可能性は低いという問題に直面してみよう.では、もしあなたの2つ以上のプロジェクトがお互いに衝突する依存関係を持っていたら、どうすればいいですか?
Virtualenv助けて!Virtualenvは、複数のPythonを並列にインストールし、各プロジェクトを1つサポートしています。実際には個々のPythonコピーをインストールすることはありませんが、異なるプロジェクト環境を隔離するための巧妙な方法を提供しています。Viralenvがどのように働いているのか見てみましょう。
Mac OS XまたはLinuxを使用している場合:
$ pip install virtualenv --user
その中の一つはお客様のシステムにviralenvをインストールするかもしれません。それはあなたの小包マネージャーにもあるかもしれません。Ubuntuを使ったら、試してみてください:
$ sudo apt-get install python-virtualenv
Windows(または以上のいずれの方法も機能しない)を使用している場合は、インストールしなければなりません pip
まず。この方面についてのより多くの情報は,参照されたい installing pip それがそうです。インストール後、実行してください pip
上からの命令ですが、ありません sudo 接頭辞。
Viralenvがインストールされると、シェルを起動して、自分の環境を作成するだけです。私は通常プロジェクトファイルと 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
いずれの方法を採用しても、あなたは現在viralenvを使用しているべきです(アクティブ環境を表示するためにシェルのプロンプトがどのように変更されているかに注意してください)。
実世界に戻りたい場合は、以下のコマンドを使用してください。
$ deactivate
そうした後、あなたのシェルのプロンプトは以前と同じように熟知しているはずです。
では、続けて進みましょう。VirtualenvでClickを起動するために以下のコマンドを入力します。
$ pip install Click
数秒後には行ってもいいです
スクリーンセーバーと例¶
Clickの基本APIと、それを用いて簡単なアプリケーションを構築する方法を示すカットビデオがあります。また,サブ命令を用いて命令を構築する方法も検討されている.
アプリケーションをクリックする例は、文書およびGitHubリポジトリで見つけることができ、自己ファイルで見つけることもできる:
inout
: File input and outputnaval
: Port of docopt naval examplealiases
: Command alias examplecomplex
: Complex example with plugin loadingvalidation
: Custom parameter validation examplecolors
: Colorama ANSI color supporttermui
: Terminal UI functions demoimagepipe
: Multi command chaining demo
基本概念-コマンドの作成¶
Clickは装飾器を通じて命令を宣言することに基づいている。内部には、高級用例のための非装飾子インターフェースがあるが、高度な使用は奨励されない。
関数をClickコマンド行ツールに修飾することで,Clickコマンドラインツールに変更することができる. click.command()
それがそうです。最も簡単な場合には,この修飾器を用いて1つの関数を修飾するだけで,呼び出し可能なスクリプトにすることができる:
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が異なる環境を一貫して支援しようとしており,環境配置が間違っていても非常に頑健であることである.Clickはすべてのものが完全に壊れていても、少なくとも基本レベルで正常に動作することを望んでいる。
これは echo()
関数は、終端構成エラーの場合、死ぬのではなく、いくつかの誤り訂正を適用する UnicodeError
それがそうです。
追加的な利点として、Click 2.0から始めて、ECHO関数はANSI色をよくサポートすることができる。出力ストリームがファイルであれば,ANSIコードを自動的に除去し,ColoramaをサポートすればANSI色もWindows上で動作する.見 ANSI色 それがそうです。
これが必要でなければ、ご利用いただけます print() 構造/機能。
入れ子命令.¶
コマンドは他のタイプのコマンドに付加することができます Group
それがそうです。これは,任意のネストスクリプトを可能にする.一例として、以下は、データベースを管理するための2つのコマンドを実現するスクリプトである。
@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()
コマンドは後で登録します¶
使用するのではなく @group.command()
装飾器、コマンドは素材で飾ることができます @click.command()
装飾師は、後にグループに登録します group.add_command()
それがそうです。これは、コマンドを複数のPythonモジュールに分割するために使用することができます。
@click.command()
def greet():
click.echo("Hello, World!")
@click.group()
def group():
pass
group.add_command(greet)
パラメータを追加する¶
パラメータを追加する場合は、ご利用ください 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(f"Hello {name}!")
どのように見えますか?
$ python hello.py --help
Usage: hello.py [OPTIONS] NAME
Options:
--count INTEGER number of greetings
--help Show this message and exit.
SetupToolsに切り替える¶
これまでに作成されたコードのうち、ファイルの末尾にコードブロックがあり、以下のようになります。 if __name__ == '__main__':
それがそうです。これは独立したPythonファイルの伝統的な外観です。Clickを使って、あなたはそうし続けることができますが、setuptoolsを通じてもっと良い方法があります。
このような状況になった原因は主に2つある(もっと多い)。
1つ目はsetuptoolsがWindowsのために実行可能なラッパを自動的に生成するため,コマンドラインユーティリティもWindows上で実行可能であることである.
2つ目の理由は,setuptoolsスクリプトがviralenvを活性化することなくUnix上でviralenvと動作することができるからである.これは、すべての要求を含むスクリプトを仮想環境にバンドルすることを可能にする非常に有用な概念です。
Clickはこれを完全に処理することができますが、実際、文書の残りの部分はsetuptoolsによってアプリケーションを作成していると仮定します。
見に行くことを強くお勧めします SetupTools統合 セクションは、例としてsetuptoolsを使用すると仮定しているので、残りの部分を読む前に。