web-dev-qa-db-ja.com

ConfigParserとインポート構成

ConfigParserよく議論される Python用のバニラ構成パーサーです。
ただし、単にimport config どこ config.pyにはpython構成パラメータを設定するコードがあります。

これらの2つの構成アプローチの長所と短所は何ですか?それぞれをいつ選ぶべきですか?

30
Jonathan

私がimport configで目にする最大の問題は、あなたが知らないことですwhatをインポートすると発生します。はい、.スタイルのインターフェースを使用して自然に参照される一連のシンボルを取得します。しかし、構成ファイルのコードは、誰が何を知っているかを行うこともできます。ここで、ユーザーを完全に信頼している場合は、configファイルでユーザーが望むすべての操作を許可することは、おそらく良いことです。ただし、数量が不明な場合、またはユーザーを自分自身から保護したい場合は、より伝統的な形式の構成ファイルを使用する方が安全で安全です。

21
Nathan

この完全性は、スクリプトのニーズと目標に依存します。 1つの方法は、実際には「より良い」とは言えません。ほとんどのpython構成パーサー(ConfigParserおよびconfigモジュールを含む)に関する非常に詳細な説明については、以下を参照してください。

Python Wiki-ConfigParserShootout

7
chown

「インポート設定」は非常にシンプルで柔軟かつ強力ですが、何でもできるため、config.pyが安全な場所にない場合は危険な場合があります。

6
dugres

IMOそれは個人的なスタイルの問題に帰着します。サードパーティが構成を編集することを意図していますか?もしそうなら、多分技術的なものではなく、ターゲットオーディエンスの頭から離れすぎない、より「自然な」構成スタイルa ConfigParserを持つことは理にかなっています。

FabricDjango などの多くの一般的なプロジェクトは、本質的に単なるPythonモジュールです。「Fabryには_fabfile.py_およびDjangoには_settings.py_があります。

全体としては、モジュールをインポートするネイティブアプローチを使用すると、はるかに多くの柔軟性が得られます。これは、ファイル、たとえば、関数、クラスの定義など、やりたいことが何でもできるからです。これは、単なるPythonインポートするモジュール。

3
jathanism