Python で ImportError: cannot import name となる場合、 pandas の import で発生していることが多いようです。実際はpandas以外にも発生しますので、pandas以外で困ってる方もご参考にください。
エラーメッセージの例
Import Error: cannot import name IO
Import Error: cannot import name TimeDelta
Import Error: cannot import name QUOTE_MINIMAL
ImportError: cannot import name ‘is_url’
ImportError: cannot import name ‘csv’
エラーは以下の1行で発生します。
1 |
import pandas |
私の場合は以下のように表示されました。
1 2 3 4 5 6 7 8 9 10 |
Traceback (most recent call last): File "c:/python/test.py", line 1, in <module> import pandas File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\__init__.py", line 22, in <module> from pandas.compat.numpy import ( File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\compat\__init__.py", line 15, in <module> from pandas._typing import F File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\_typing.py", line 3, in <module> from typing import ( ImportError: cannot import name 'IO' |
原因
同じ階層にあるファイルの名前が、pandasで使用してる変数、関数、ファイル名とバッティングしている。
対策
問題となっているファイルを探し出しリネームする。私の場合はtyping.pyが邪魔をしてました。エラーが出ているファイル名自体が問題がある場合があります。試しにリネームしてみてください。
問題となっているファイルの探し方
エラーメッセージのひとつ上のスタックトレースを確認しましょう。※のところをご覧ください。
1 2 3 4 5 6 7 8 9 10 |
Traceback (most recent call last): File "c:/python/test.py", line 1, in <module> import pandas File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\__init__.py", line 22, in <module> from pandas.compat.numpy import ( File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\compat\__init__.py", line 15, in <module> from pandas._typing import F File "C:\Users\USERNAME\AppData\Local\Programs\Python\Python36\lib\site-packages\pandas\_typing.py",<strong>※</strong> line 3, in <module> from typing import ( ImportError: cannot import name 'IO' |
私の場合は、ここでtypingというキーワードが見つかります。皆さんのエラーが出ている環境で同じ場所を調べてみてください。心当たりがある単語が出てこないでしょうか?
何時間もハマって苦しんでいた事案がこの記事のおかげで解決しました。。。。
感謝の気持ちが莫大すぎてついコメントしてしまいました。
本当に×100、ありがとうございます!
すこしでもお力になれてよかったです。