2016-07-30 11 views
0

私は、Python 3でアプリケーションの設定をどこでどのように初期化するかについてかなり混乱しています。Pythonでどのように設定を初期化するのか?

私は、アプリケーション固有の設定(DB接続文字列、URLエンドポイントなど)とロギング設定で構成されています。

私のアプリケーションが意図した機能を実行する前に、私はアプリケーションを初期化して、設定を記録したいと思います。

いくつかの試みの後、私は最終的に私のメインエントリーモジュールで以下のコードのようなものになりました。すべてのインポートがファイルの先頭(https://www.python.org/dev/peps/pep-0008/#imports)にグループ化されているという素晴らしい効果がありますが、直感的ではない副作用だけのためにconfigモジュールをインポートしているので、気分が良くなりません。

import config.app_config # sets up the app config 
import config.logging_config # sets up the logging config 

... 

if __name__ == "__main__": 
    ... 

config.app_configようになり、以下:Pythonでのアプリケーションの構成を設定する一般的な方法は何ですか

if not os.path.isdir('.\logs'): 
     os.makedirs('.\logs') 

    if os.path.exists('logging_config.json'): 
     with open(path, 'rt') as f: 
      config = json.load(f) 
     logging.config.dictConfig(config) 
    else: 
     logging.basicConfig(level=log_level)  

_config = { 
    'DB_URL': None 
} 


_config['DB_URL'] = _get_db_url() 

def db_url(): 
    return _config['DB_URL'] 

def _get_db_url(): 
    #somehow get the db url 

config.logging_configは次のようになりますか?私は、複数のアプリケーションconfig.app_configconfig.logging_configモジュールを使用して、それぞれを持っていますが、おそらく私はDjangoのアプローチの削減バージョンになってしまったファイル

+0

これはDjangoですか?ちょうど –

+0

いいえ、Djangoを使っていないことを確認したいのですが、私は本当に上品な(https://github.com/django/django/blob/master/django/conf/__init__.py)からアプローチをコピーしてしまいました。私が気に入らないのは、環境変数の使用だけです。 – user783836

答えて

関連する問題