Python画像ライブラリが「デコーダーJPEGを利用できません」というメッセージで失敗する-PIL


305

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

アップロードを行うたびに、コードが失敗します:

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

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


22
有効な質問です。PILは有名なPythonライブラリであり、一部のLinuxシステムでは奇妙なエラーを引き起こします。この質問と答えは私を助けてくれました。それは典型的なSOの質問です。
neves 2013年

私のPRAGMATISTとOCDは、SOではなくServerFaultに属していると言います。しかし、何人のプログラマーがこの問題にぶつかっていますか?質問をServerFaultに移動し、SOのリダイレクトをそのままにしておくことに投票します。
FlipMcF 2013年

1
たぶん、あなたはこれを読んで、それを試すことができます:stackoverflow.com/questions/18504835/...
ウィー

1
@dkt枕を使用していて、この問題が発生したため、ここにいます。
Stephen Tetreault 2014

1
@dkt私が知っている、私は問題がまだ続くというだけで言っていた。
Stephen Tetreault 2014

回答:


488

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

それでもPILを使用している場合は、実際には枕を使用する必要があります。したがって、pip uninstall PILこれらの手順に従って切り替える前に、またはPILを使用する正当な理由がある場合は、以下の「枕」を「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

それでもうまくいかない場合は、64ビットUbuntuと32ビット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 32ビットの場合:

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/

次に枕を再インストールします。

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

(コメントからのフィードバックを含めるための編集。32ビット版ではこれが異なることを指摘してくれたCharles Offenbacherに感謝します--no-cache-dir


1
問題は、2つのpythonパッケージがあったことです。1つはubuntuに同梱され、もう1つはZope Serverに属していました。どういうわけか、間違ったパッケージに誤ってインストールしたため、ライブラリが破損しました。それ以外の場合は問題ありません。
ラビ

2
記録としては、x86_64でのみ機能するため、次のコマンドを実行する必要がありました。sudo ln -s /usr/lib/i386-linux-gnu/libz.so / usr / lib /; sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 / usr / lib /; sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so / usr / lib /
Charles Offenbacher

2
PILを使い始めたばかりの人にとっては、これは時代遅れであり、もはやメンテナンスされていないことに注意してください。プロジェクト内の画像を操作する場合は、フォークまたはPILで更新および保守されているPILLOWを使用します。
Dhiraj Thakur 2014

1
@Rolo 3時間後、2番目のオプションは私にとってはうまくいきました。おかげで枕はダンバスです
Akshay Mukadam 2014

5
pipの最近のバージョンでは、ダウンロードしたパッケージとそのコンパイルをキャッシュする必要があります。確かに、pip install最初は非常に時間がかかりましたが、その後のアンインストールと(再)インストールは疑わしいほど迅速でした。とにかく、上記の方法は実行するまで機能しませんでしたpip install --no-cache-dir pillow。幸運を!
t-mart 2015

63

OSXを使用している場合は、次のバイナリを使用してlibpngとlibjpegをシステム全体にインストールしました。

OSXのlibpngおよびlibjpeg

(virtualenvのpipを使用して)PILを既にインストールしているため、次のコマンドを実行しました。

pip uninstall PIL
pip install PIL --upgrade

これでdecoder JPEG not availableエラーが解決しました。

更新(14/4/14)

新しいバージョンのpipでは、ライブラリ(PILを含む)を外部ソースからダウンロードするために追加のフラグが必要です。以下を試してください:

pip install PIL --allow-external PIL --allow-unverified PIL

詳細については、次の回答を参照してください:pip install PILはvirtualenvにインストールしないでください

更新2

OSX Mavericksの場合、以下の@RicardoGonzalesコメントARCHFLAGSとしてフラグを設定する必要があります

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL

Mavericks(10.9)にアップグレードした後、この問題が発生しました。次のSOの投稿は私のために問題を解決しました。@Formulkaによるインストールコマンドラインツールのコメントまで下にスクロール
tatlar

Ubuntu 12.04 64ビットを使用している場合は、zeantsoiのソリューションを試してください。彼がOSXでそれを実行したことは知っていますが、私はそれを試してみましたが、うまくいきました。
デッドロック

このエラーが発生しました:要件を満たすドンロードが見つかりませんでしたpil
RicardoGonzales 14

@RicardoGonzales、おそらくあなたは追加のフラグを渡す必要があるpipのバージョンで実行しています。私の回答の更新をご覧ください。
zeantsoi 2014

@zeantsoiはパッケージをダウンロードしてインストールしていますが、「クリーンアップ」メッセージの後に表示されます。「-c import setuptools、tokenize; __ file ... ...」というアドバイスはありますか?
RicardoGonzales 14

29

これは私のために働いた唯一の方法です。パッケージのインストールとPILの再インストールが機能しませんでした。

ubuntuで、必要なパッケージをインストールします。

sudo apt-get install libjpeg-dev

libfreetype6 libfreetype6-dev zlib1g-dev他のデコーダーを有効にするためにインストールすることもできます)。

次に、PILを枕に置き換えます。

pip uninstall PIL
pip install pillow

私はこれを少し前に行いましたが、今日、突然エラーが再発しました。枕をアップグレードすると、問題が修正されました:pip install pillow --upgrade
Dennis Golomazov 2015

21

以下はubuntu 12.04で動作します:

pip uninstall PIL
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
pip install PIL --upgrade

「-JPEG support available」が表示された場合、それは機能することを意味します。

ただし、jpeg画像を編集しても機能しない場合は、pythonパスを確認してください。私のpythonパスが抜けた/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/ので、私は編集します~/.bashrc、このファイルに次のコードを追加してます。

編集: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/

そして、ついに、うまくいきました!!


こんにちは、--JPEGサポートが利用可能なPIL統計をインストールしているため、Pythonパスが機能しない問題が発生していると思います。ただし、実際に.jpeg画像でpil optsを実行すると、デコーダーjpegエラーが発生します。 stackoverflow.com/questions/18504835/…–
Lucas Ou-Yang

16

Fedora 17では、インストールlibjpeg-develしてから再インストールする必要がありましたPIL

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL

1
RHEL / CentOSについても同様です。
Jakub Roztocil、2014年

14

Roloの答えは素晴らしいですが、pipキャッシュ(pip 7で導入)をバイパスしてPillowを再インストールする必要がありました。そうしないと、適切に再コンパイルされません!!! コマンドは次のとおりです。

pip install -I --no-cache-dir -v Pillow

ログでこれを読んで、枕が適切に構成されているかどうかを確認できます。

PIL SETUP SUMMARY
    --------------------------------------------------------------------
    version      Pillow 2.8.2
    platform     linux 3.4.3 (default, May 25 2015, 15:44:26)
                 [GCC 4.8.2]
    --------------------------------------------------------------------
    *** TKINTER support not available
    --- JPEG support available
    *** OPENJPEG (JPEG2000) support not available
    --- ZLIB (PNG/ZIP) support available
    --- LIBTIFF support available
    --- FREETYPE2 support available
    *** LITTLECMS2 support not available
    *** WEBP support not available
    *** WEBPMUX support not available
    --------------------------------------------------------------------

jpg、tiffなどのサポートが有効になっていることがわかります。以前にapt(libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)を介して必要なライブラリをインストールしたためです。


これをありがとう。--no-cache-dirオプションも私に役立ちました
dranxo

12

Mac OS X Mavericks(10.9.3)では、次のようにしてこれを解決しました。

libjpegをbrew(パッケージ管理システム)でインストールします。

brew install libjpeg

枕を再インストールします(私はPILの代わりに枕を使用します)

pip install -I pillow


2
これは、brewのインストールに関する別の問題が原因である可能性がありますが、brew unlink jpeg && brew link jpegPillowをインストールする前に行う必要がありました。
Lucas 14年

11
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

これらをインストールし、PILをpipでインストールしてください。ソースからコンパイルしたため、何らかの理由で機能しませんでした。


必要なすべての依存関係のリスト。
Paolo

9

私はすでに使用Pillowしていて、同じエラーが発生しました。インストールしようとしましたlibjpeglibjpeg-dev、他の人から提案されたですが、(新しい)バージョンがすでにインストールされていると言われました。

最後に、それが再インストールしただけでしたPillow

sudo pip uninstall Pillow
sudo pip install Pillow

3

私は初心者なのでzeantsoiの投稿にコメントすることはできません。

IOError:デコーダーjpegは使用できません

1)Xcodeツールをインストールします(ターミナルを開いて実行: xcode-select --install)-この投稿からの抜粋Mac OS X 10.9の後にPILをインストールできません

2)次のリンクからlibpngおよびlibjpegパッケージ(コンボインストーラー)をインストールしますhttp : //ethan.tira-thompson.com/Mac_OS_X_Ports.html

3)再起動(必須であるかどうかは不明)

4)runを使用してPIL再インストールしますpip install -I PIL(問題が発生する前にPILを最初にインストールしたため)

この助けを願って、もっと混乱しないでください...

_oho


2

この質問はかなり前に投稿されたもので、ほとんどの回答はかなり古いものです。したがって、これを理解するために何時間も費やしたとき、何も機能せず、この投稿のすべての提案を試しました。

DjangoアバターフォームでJPGをアップロードしようとすると、標準のJPEGエラーが引き続き表示されました。

raise IOError("decoder %s not available" % decoder_name)
OSError: decoder jpeg not available

次に、リポジトリでUbuntu 12.04を確認したところ、の追加パッケージに気づきましたlibjpeg。私はこれらをインストールし、私の問題は解決しました:

sudo apt-get install libjpeg62 libjpeg62-dev

これらをインストールすると、削除libjpeg-devlibjpeg-turbo8-devlibjpeg8-dev

これが2015年以降の人に役立つことを願っています!

乾杯


1

ここでも同じ問題が発生しますが、PILではなくPillowを使用していることを除いてJPEG support available、はまだ発生していますIOError: decoder/encoder jpeg not available

上記のすべてを試してみましたが、時間もたつと、使用するsudo pip installと期待どおりに機能しないことに気づきました。virtualenv。愚かな私。

sudoコマンドを効果的に使用すると、virtualenvがアクティブ化されていない新しいシェル(これは私の理解では完全に正しくない場合があります)でコマンドが起動されます。つまり、パッケージはグローバル環境にインストールされます。(これは混乱を招きました。枕の2つの異なるインストールがあったと思います。)

私は物事を片付け、ユーザーをrootに変更し、virtualenvに再インストールしました。
うまくいけば、これは誰かを助けるでしょう!


1

Fedoraの場合

前提条件をインストールします
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
今枕をインストールします

sudo pip install pillow

注-libjpegおよびzlibの場合、Fedora / CentOS / Red Hatにlibjpeg-develおよびzlib-develパッケージをインストールします


0

最初に、Pythonをアンインストールすることに加えて、隠しフォルダーuser / appDataにあるpythonフォルダーを削除する必要がありました(これは大きな頭痛の種でした)。次に、WinPythonディストリビューションをインストールしました:PILを含むhttp://code.google.com/p/winpython/


4
WindowsでのPython開発は苦痛です。私はしないことをお勧めします。
eviltnan 2013

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.