私はいくつかのモジュールを持つパッケージを持っていますconfig
とlogging
(とりわけ)。モジュールの一部をインポートする
モジュールlogging
モジュールは、パッケージのログファイル(config
モジュールで定義されています)にログインする方法を提供します。
config
モジュールには、静的な設定値(ハードコードされた)とファイルからロードされた動的な値が含まれています。
mypackage/logging.py
import mypackage.config
def log(message):
log_file = mypackage.config.log_file
open(log_file, "a").write(message + "\n")
mypackage/config.py
import mypackage.logging
log_file = "/var/log/mypackage.log"
try:
# Load some more config from file.
except Exception as e:
# That's fine, just log that we couldn't open the file.
mypackage.logging.log("Couldn't open config file: %s" % str(e))
問題は、上記のコードは、mypackage/config.py
からmypackage.logging.log()
を呼び出すことがその手段のインポートを完了する前に円形の依存関係の問題に苦しんでいることですlog_file = mypackage.config.log_file
行内mypackage/logging.py
は失敗します。
それはmypackage.logging.log()
が呼び出されたときにそれがmypackage.config.log_file
で利用可能であるように、モジュールにmypackage/config.py
の静的な部分をインポートすることは可能ですか?
この問題がなければ、これを設計することはできません。