ImportError: cannot import name *** from xxx

Python
本ページはプロモーションが含まれています

はじめに

今回はPythonのファイルのインポートで発生したエラーについてです。
参照先の問題があると発生するエラーとなっています。
エラーのときの状況や原因や対処方法など書いてあるので参考にしていただければと思います。

エラーの原因と対処法

エラー

まず発生したエラーですが、

ImportError: cannot import name 'my_function' from 'my_module'

というものです(my_functionmy_module部分は状況により異なります)
日本語で訳すと、
my_moduleというモジュールからmy_functionという名前をインポートすることができません。
となります。

原因とサンプルソース

原因

原因は次のようなものが考えられます

  1. my_functionという名前が my_module モジュール内に存在しない。
  2. my_module モジュールが正しくインストールされていない、またはパスが誤っている。

対処方法

  1. my_moduleモジュール内で my_function が正しく定義されているか確認する。
  2. モジュールが正しくインストールされているか、または正しい場所にあるか確認する。

エラーが発生するソースコード

具体的なエラーが発生するコードを見ていきます。

ファイルは次の2つです。

  • my_module.py
  • main.py

my_module.py

# my_module.py
# 'my_function' 関数の定義なし

main.py

# main.py
from my_module import my_function  # エラー発生

# 何らかの処理

これを実行すると

ImportError: cannot import name 'my_function' from 'my_module'

とエラーになります。

修正したソースコード

次がエラーを修正したソースコードです

my_module.py

# 'my_function' 関数を定義
def my_function():
    print("Hello, world!")

main.py

from my_module import my_function  # エラーなし

my_function()  # "Hello, world!" が出力される

これを実行すると(main関数からmy_functionが呼び出され)

Hello, world!

となります。

注意点・Tips

今回のエラーやインポートに関するTipsです

  • インポートする前に、目的の関数やクラスがモジュール内に存在しているか確認してください。
  • タイポや大文字・小文字の違いに注意してください。
  • Pythonがモジュールを探しに行くパスを確認することも重要です。sys.pathで確認できます。
  • 依存関係が解決されているかも確認するようにしましょう。必要なライブラリがインストールされていない場合もこのようなエラーが出ます。

さいごに

今回はインポートのミスによるエラーでした。
ライブラリを利用する時にパスが間違っていたり名称が違う(pip installでインストールした名称とimportで名前が違う場合など稀にあります)ことがあるので注意が必要ですね。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

タイトルとURLをコピーしました