はじめに
今回はPythonのファイルのインポートで発生したエラーについてです。
参照先の問題があると発生するエラーとなっています。
エラーのときの状況や原因や対処方法など書いてあるので参考にしていただければと思います。
エラーの原因と対処法
エラー
まず発生したエラーですが、
ImportError: cannot import name 'my_function' from 'my_module'
というものです(my_function
とmy_module
部分は状況により異なります)
日本語で訳すと、
「my_module
というモジュールからmy_function
という名前をインポートすることができません。」
となります。
原因とサンプルソース
原因
原因は次のようなものが考えられます
my_function
という名前がmy_module
モジュール内に存在しない。my_module
モジュールが正しくインストールされていない、またはパスが誤っている。
対処方法
my_module
モジュール内でmy_function
が正しく定義されているか確認する。- モジュールが正しくインストールされているか、または正しい場所にあるか確認する。
エラーが発生するソースコード
具体的なエラーが発生するコードを見ていきます。
ファイルは次の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で名前が違う場合など稀にあります)ことがあるので注意が必要ですね。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。