Python

【Python】『AttributeError: partially initialized module』エラー時の対応方法

アイキャッチ_AttributeError

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』に変更することでエラーが解消されました。