私はPythonで書かれたコマンドラインアプリケーションを構築しています。私はプロファイルのアイデアを使用したいと思います。各プロファイルには、アプリケーションで使用するいくつかの異なる値があります。コマンドラインアプリケーションのアプリケーションコンテキスト内の変数
properties.ini
ファイルを作成し、プロファイルを受信して一部の変数にプロパティを読み込む1つの機能を含むファイルを作成します(config_parser.py
)。それから私はそれらを使用するために必要なすべてのファイルでこれをインポートします。
アプリケーションを実行するときにプロファイルを渡して、適切なプロパティをロードしてアプリケーション全体のコンテキストに入れて、どこでもimport config_parser
を避けてください。例えば
、私properties.ini
に私が持っている:私が持っているconfig_parser.py
で
[DEFAULT]
[email protected]
[e2e_testing]
[email protected]
を:
import configparser
config = configparser.ConfigParser()
config.read('properties.ini')
GLOBAL_EMAIL = ''
def load_config(profile):
global GLOBAL_EMAIL
GLOBAL_EMAIL = config[profile]['GLOBAL_EMAIL']
そして、私は私が行うプロパティを使用する必要があるすべてのスクリプトのために:
from application import config_parser as CFG
def method(profile):
CFG.load_config(profile)
print CFG.GLOBAL_EMAIL
理想的には、この設定を実行中にロードしたいmain.py
(これは私のアプリケーションのエントリーポイント)であり、そのパッケージ内でモジュール全体を共有しているので、config_parser
をどこにでもインポートする必要はなく、profile
変数を渡す必要もありません。
私はおよそ__builtin__
と(そう、彼らはそのパッケージ内のすべてのモジュールで利用できるようになります)config_parser
は__builtin__
内の変数を追加することについて考えを読んで、私はどのように__builtin__
するのでPytestとのユニットテストをするかわかりませんソースフォルダ内のモジュールに対してのみ利用可能であり、私は何とかそれを模擬する必要があります。
ありがとうございます!
configを一度解析して、すべてのモジュールに渡すのはなぜですか? – ThisSuitIsBlackNot