先日、pipで構築したPython環境にpandasだけをインストールして使用していた時に発生した事象です。
pandasのread_excelでExcelファイルを読み込もうとしたところ、見たことないエラーが表示されました。
ImportError: Missing optional dependency 'openpyxl'. Use pip or conda to install openpyxl.
openpyxlがインストールされていないというエラー内容です。
調べた結果、どうやらxlsxファイルを扱うときは、pandasの内部処理でopenpyxlを使っているようです。
事象
(ソース)
import pandas as pd
df = pd.read_excel(r"C:\temp\test.xlsx")
print(df)
(エラー)
ImportError: Missing optional dependency 'openpyxl'. Use pip or conda to install openpyxl.
原因
pythonの実行環境にopenpyxlがインストールされていなかったことが原因でした。
pip install openpyxlでインストール後に再度実行すると問題なく動作するようになりました。
結論としてpandasでExcelファイルを使うときは、内部でopenpyxlを使用しているようです。
あくまで内部で使っているだけなので、import文は不要みたいです。
なぜ今まで気づかなかったのかというと、つい最近までAnaconda環境でPythonを実行していたんですけど、使わないライブラリがインストールされるのが嫌だったのでAnaconda環境をアンインストールしてpipコマンドで管理するように構築し直していました。
※Anaconda環境では標準でopenpyxlがインストールされているがpip環境ではインストールされていない。
pandasだけ使えるようにすれば、Excelが使えると思い込んでいたので勉強になりました。
openpyxlが内部で使われるのは、エクセルの拡張子がxlsxの時だけみたいです。xlsは大丈夫でした。
まとめ
- pandasでExcelを扱う場合はopenpyxlライブラリが必要。
- openpyxlライブラリは必要だがimportする必要はなし。
コメント