1. ホーム
  2. パイソン

[解決済み】Python Image Libraryが "decoder JPEG not available "というメッセージで失敗する件 - PIL

2022-03-29 13:51:58

質問

私のシステムでは、PILはJPEGをサポートしています。

アップロードを行うたびに、私のコードは失敗しています。

File "PIL/Image.py", line 375, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

どうすれば解決できますか?

どのように解決するのですか?

libjpeg-dev は pillow (または PIL) で jpeg を処理できるようにするために必要なので、これをインストールしてから pillow を再コンパイルする必要があります。また、Ubuntu 14.04では、libjpeg8-devが必要なようです。

まだPILを使っているのであれば、最近は本当にpillowを使うべきでしょうから、まず pip uninstall PIL または、PILにこだわる正当な理由がある場合は、下記の "pillow" を "PIL" に置き換えてください)。

Ubuntuの場合。

# install libjpeg-dev with apt
sudo apt-get install libjpeg-dev
# if you're on Ubuntu 14.04, also install this
sudo apt-get install libjpeg8-dev

# reinstall pillow
pip install --no-cache-dir -I pillow

それでもうまくいかない場合は、64bitと32bitのUbuntuのどちらを使っているかによって、以下のいずれかを試してみてください。

Ubuntu x64の場合。

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

またはUbuntu 32bitの場合。

sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/

その後、pillowを再インストールしてください。

pip install --no-cache-dir -I pillow

(コメントからのフィードバックも含めて編集しました。32bit版と異なることを指摘してくれたCharles Offenbacherと、 --no-cache-dir ).