インフラストラクチャを管理するための一連のスクリプトとモジュールを構築しています。組織を整理するために、できるだけ多くの労力を集約し、より新しいスクリプト用のボイラープレートを最小限にしたいと思います。複数のカスタムモジュールにバックアップされた複数のスクリプトでPythonのargparseを使用
特に、ここでの問題は、ArgumentParserモジュールを統合することです。
構成例は、このような何かを整理するスクリプトやライブラリを持っていることです:script2
はlogger
とlib2
を利用するだろうが、このシナリオscript1
で
|-- bin
|-- script1
|-- script2
|-- lib
|-- logger
|-- lib1
|-- lib2
は、logger
とlib1
を利用することができます。どちらの場合でも、私はロガーに '-v'と '-d'を受け入れるようにしたいのに対して、script1
は追加のargsとlib2
の他のargを受け入れることもできます。私はこれが衝突につながる可能性があり、手動でそれを管理することを認識しています。
SCRIPT1
#!/usr/bin/env python
import logger
import lib1
argp = argparse.ArgumentParser("logger", parent=[logger.argp])
スクリプト2
#!/usr/bin/env python
import logger
import lib2
ロガー
#!/usr/bin/env python
import argparse
argp = argparse.ArgumentParser("logger")
argp.add_argument('-v', '--verbose', action="store_true", help="Verbose output")
argp.add_argument('-d', '--debug', action="store_true", help="Debug output. Assumes verbose output.")
各スクリプトとlibコuldはそれ自身の引数を持つ可能性がありますが、これらはすべて最終的な1つのarg_parse()に統合する必要があります。
これまでの試みでは、argpの設定を継承/拡張できませんでした。これをライブラリファイルとスクリプトの間でどうやって行うことができますか?
あなたはargparse parents = [parser1、parser2]の機能がうまく機能していないと言います。 – babbageclunk