Pythonで標準モジュールの動作検証をしたく、プログラムを実行したのですが『AttributeError: partially initialized module』のエラーが発生しました。
今回は『AttributeError: partially initialized module』の原因と発生時の対応方法について紹介したいと思います。
エラー内容
『logging』モジュールの動作検証時に次のプログラムを実行したところエラーが発生しました。
import logging
# ロガーオブジェクトを生成
logger = logging.getLogger(__name__)
# 出力されたエラーメッセージ
# partially initialized module 'logging' has no attribute 'getLogger' (most likely due to a circular import)
# File "C:\Python\logging\logging.py", line 4, in <module>
# logger = logging.getLogger(__name__)
# File "C:\Python\logging\logging.py", line 1, in <module>
# import logging
エラー原因
エラーメッセージの内容を翻訳したところ『循環インポート』が原因であることが分かりました。
エラーメッセージの翻訳
『部分的に初期化されたモジュール’logging’には属性’getLogger’がありません(おそらく循環インポートが原因です)』
『import logging』コマンドではPythonの標準モジュールではなく、自分自身のファイル『logging.py』を呼出したことで今回のエラーが発生しているようです。
対処法
ファイル名に問題があり目的のモジュールをインポートできていないので、ファイル名を別の名前に変更する必要があります。
今回の場合は『loggin.py』を『test_logging.py』に変更することでエラーが解消されました。