pyinstallerでexeファイルを生成し、社内に配布しようと考えたが、xlrdでエラーがでてしまう。以下エラー内容
Traceback (most recent call last):
File "test.py", line 15, in <module>
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\pandas\util\_decorators.py", line 296, in wrapper
return func(*args, **kwargs)
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\pandas\io\excel\_base.py", line 304, in read_excel
io = ExcelFile(io, engine=engine)
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\pandas\io\excel\_base.py", line 867, in __init__
self._reader = self._engines[engine](self._io)
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\pandas\io\excel\_xlrd.py", line 22, in __init__
super().__init__(filepath_or_buffer)
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\pandas\io\excel\_base.py", line 353, in __init__
self.book = self.load_workbook(filepath_or_buffer)
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\pandas\io\excel\_xlrd.py", line 37, in load_workbook
return open_workbook(filepath_or_buffer)
File "c:\users\user\anaconda3\envs\kasou\lib\site-packages\xlrd\__init__.py", line 170, in open_workbook
from .biffh import biff_dump
xlrd.biffh.XLRDError: Excel xlsx file; not supported
上記のように仮想環境で生成したexeファイルを実行するとエラーが出力されてうまく動作しないエラーがでます。普通にPandasでread_excel関数を使っている箇所でエラーが発生していました。
xlrd.biffh.XLRDError: Excel xlsx file; not supportedの一文を見るとわかる通り、xlrdがExcelのxlsx拡張子のファイルに対応していないとのエラー内容のようです。
conda list
でxlrdのバージョンを確認すると、2.0.1でした。今回のエラーは、2020年12月11日にxlrdがバージョンアップデートされたみたいでそれ以降に発生するエラーのようです。xlrd公式を見るとxls以外の拡張子のExcelファイルには対応してないとのこと。
ただ、以前はうまく動作したので、試しにバージョンを下げてみることに…
conda install xlrd==1.2.0
再度pyinstallerでexe化すると実行成功しました。xlrd2.0.0でサポートを終了したみたいです。
また、xlrdライブラリの詳細については公式ドキュメントをご参照ください。
このライブラリは、
.xls
ファイル以外のものを読み取ることはなくなります。新しいファイル形式を読み取る代替方法については、http://www.python-excel.org/を参照してください。
上記xlrdライブラリの公式ドキュメントによれば、xlrdライブラリはxls以外のファイルを読み込まなくなったようです。そのため、比較的新しいxlsxなどのファイルは別のライブラリを使用して読み込む必要があります。
代替法の一つとして、openpyxlを使用する手法があります。pipインストールして、以下のように記述を変更することで対応できます。
df = pd.reaad_excel('テスト.xlsx',engine="openpyxl")