をクリックしてサブコマンドを使用してPython CLIを開発する
Pythonアプリケーションを使用してCLIアプリケーションを開発するには、すでに大きな投稿がありますClick 単一のPythonファイルから設定されているコマンドの例を示すライブラリですが、コマンドを自分の個々のPythonファイルに整理したい場合もあります.
私はCLIアプリケーションを構築している間、同様の要件を持っていました、そして、私が一緒に配線して、マイナーな誤りを解決したい構造を得るのにかなりの時間を費やしました.このチュートリアルでは、CLIアプリケーションの正常に動作する例を開発する方法を示します.
このチュートリアルでは、複数のコマンドを持つCLIアプリケーションを開発します
次の構造体と空白のPythonファイルを次のように新しいプロジェクトディレクトリを作成します
インストール
のスタートコードから始めましょう
この部分が正常に動作することを確認します.
次のコードを書きましょう
関数を定義しました オプションのboolean型を定義する
この時点で、メインのコマンド群を作成しました.pyは“cli”と呼ばれる別のコマンド“build”と呼ばれますが、まだそれらを結び付けていません.
これを加えましょう
6.1 .インポートコマンド/ビルドライブラリ
我々は 追加
実行できることを確認します
📌 この時点で作業構造を持っているならば、コマンド/ディレクトリまたは他のdirの下で別々のPythonファイルに新しいサブコマンドを加えるための同様のプロセスに簡単に従うことができます.
例えば、aを加えましょう
機能と利用可能なオプションの定義
インポートこの新しい
追加
実行できることを確認します
🏁 🏆 このチュートリアルが役に立ちましたので、別のPythonファイル/dirに編成されたコマンドで作業CLI構造を実装するのを助けてください.コメントや質問にフィードバックを残してお気軽に.🔚
🛎 追記:上記のファイルの最終版は参考文献です.
メイン.パイ
コマンド/ビルド.パイ
コマンド.パイ
私はCLIアプリケーションを構築している間、同様の要件を持っていました、そして、私が一緒に配線して、マイナーな誤りを解決したい構造を得るのにかなりの時間を費やしました.このチュートリアルでは、CLIアプリケーションの正常に動作する例を開発する方法を示します.
このチュートリアルでは、複数のコマンドを持つCLIアプリケーションを開発します
build
and deploy
このように:$ python3 main.py
Usage: main.py [OPTIONS] COMMAND [ARGS]...
CLI tool to manage full development cycle of projects
Options:
--help Show this message and exit.
Commands:
build
deploy
次の構造体と空白のPythonファイルを次のように新しいプロジェクトディレクトリを作成します
$ tree
.
├── commands
│ ├── __init__.py
│ ├── build.py
│ ├── deploy.py
└── main.py
1 directory, 4 files
内部の別のPythonファイルを作成することができますcommands
あなたのメインCLIに公開する各コマンドのdir.インストール
click
これを使ったPythonライブラリpip3 install click
のスタートコードから始めましょう
main.py
:import click
@click.group(help="CLI tool to manage full development cycle of projects")
def cli():
pass
if __name__ == '__main__':
cli()
📌 スターター機能を注釈したことに注意してくださいcli()
with @click.group
これがコマンド群であることを示します.この部分が正常に動作することを確認します.
$ python3 main.py
Usage: main.py [OPTIONS] COMMAND [ARGS]...
CLI tool to manage full development cycle of projects
Options:
--help Show this message and exit.
次のコードを書きましょう
build
サブコマンドcommands/build.py
:import click
@click.command()
@click.option('--docker', is_flag=True, help='Indicates the project should be built into docker image')
def build(docker):
if docker:
print(f'Building this repo into a docker image...')
else:
print(f'Building this repo using default method...')
📌 前進する前にこれらのポイントに注意してください.build(docker)
これは@click.command()
これがコマンドであることを示す.--docker
for build
値が渡されるコマンドbuild()
関数.ここで追加のオプションを定義できますbuild
ここでこのコマンドのためにあなた自身のロジックをコマンドして、書きます.この時点で、メインのコマンド群を作成しました.pyは“cli”と呼ばれる別のコマンド“build”と呼ばれますが、まだそれらを結び付けていません.
これを加えましょう
build
メイングループへのコマンド6.1 .インポートコマンド/ビルドライブラリ
main.py
: from commands import build
6.2 .追加build
メイングループへのコマンドmain.py
: cli.add_command(build.build)
📌 注意:add_command()
on cli
の代わりにclick
オブジェクトbuild.build
の代わりにbuild
実行できることを確認します
build
メインプログラムのサブコマンドとして:$ python3 main.py build --help
Usage: main.py build [OPTIONS]
Options:
--docker Indicates the project should be built into docker image
--help Show this message and exit.
例えば、aを加えましょう
deploy
主なCLIプログラムへのサブコマンド機能.このサブコマンドは--env
and --cloud
) そして、許可された値とデフォルト値を表示している間、ユーザーに入力を入力させてください.機能と利用可能なオプションの定義
deploy
サブコマンド:import click
@click.command()
@click.option('--env', '-e', default="dev", type=click.Choice(['dev', 'stg', 'prd'], case_sensitive=False), prompt='Enter env name to deploy', help='Env to deploy')
@click.option('--cloud', '-c', default="aws", type=click.Choice(['aws', 'gcp', 'azure'], case_sensitive=False), prompt='Enter cloud to deploy to', help='Cloud to deploy to')
def deploy(env, cloud):
print(f'Deploying current application artifact to {env} environment in {cloud} cloud...')
インポートこの新しい
deploy
メインコマンドfrom commands import deploy
追加
deploy
メインコマンドcli.add_command(deploy.deploy)
実行できることを確認します
deploy
サブコマンド:$ python3 main.py deploy
Enter env name to deploy (dev, stg, prd) [dev]:
Enter cloud to deploy to (aws, gcp, azure) [aws]:
Deploying current application artifact to dev environment in aws cloud...
🛎 追記:上記のファイルの最終版は参考文献です.
メイン.パイ
import click
from commands import build
from commands import deploy
@click.group(help="CLI tool to manage full development cycle of projects")
def cli():
pass
cli.add_command(build.build)
cli.add_command(deploy.deploy)
if __name__ == '__main__':
cli()
コマンド/ビルド.パイ
import click
@click.command()
@click.option('--docker', is_flag=True, help='Indicates the project should be built into docker image')
def build(docker):
if docker:
print(f'Building this repo into a docker image...')
else:
print(f'Building this repo using default method...')
コマンド.パイ
import click
@click.command()
@click.option('--env', '-e', default="dev", type=click.Choice(['dev', 'stg', 'prd'], case_sensitive=False), prompt='Enter env name to deploy', help='Env to deploy')
@click.option('--cloud', '-c', default="aws", type=click.Choice(['aws', 'gcp', 'azure'], case_sensitive=False), prompt='Enter cloud to deploy to', help='Cloud to deploy to')
def deploy(env, cloud):
print(f'Deploying current application artifact to {env} environment in {cloud} cloud...')
Reference
この問題について(をクリックしてサブコマンドを使用してPython CLIを開発する), 我々は、より多くの情報をここで見つけました https://dev.to/drcloudycoder/develop-python-cli-with-subcommands-using-click-4892テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol