2012-01-18 111 views
288

PIL在我的系統中支持JPEG。Python圖像庫失敗,並顯示消息「解碼器JPEG不可用」 - PIL

每當我做一個上傳,我的代碼與失敗:

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

我怎樣才能解決這個問題?

+21

這是一個有效的問題。 PIL是一個着名的Python庫,它在一些Linux系統中給出了一個奇怪的錯誤。這個問題和答案只是幫助我。這是一個典型的SO問題。 – neves 2013-10-09 23:19:41

+0

我的PRAGMATIST和OCD表示它屬於ServerFault,而不屬於SO。但有多少程序員遇到這個問題?我投票將問題移至ServerFault,並在SO上留下重定向。 – FlipMcF 2013-11-14 22:44:23

+0

好的,很好。我編輯了這個問題以適應SO的規則。希望@ravi不介意編輯。 – FlipMcF 2013-11-14 22:57:36

回答

467

libjpeg-dev需要能夠使用pillow(或PIL)處理jpegs,因此您需要安裝它並重新編譯枕頭。這也似乎中的libjpeg8-dev爲14.04

如果你還在使用PIL,那麼你真的應該使用枕頭,雖然這些天,所以首先pip uninstall PIL以下說明切換前需要在Ubuntu,或者如果你有一個很好的堅持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位或32位的Ubuntu。

對於Ubuntu的64:

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位不同,而t-mart建議使用--no-cache-dir)。

+1

問題是我有兩個python軟件包。一個與Ubuntu和另一個屬於Zope服務器。不知何故,該庫已損壞,因爲我錯誤地將它安裝在錯誤的軟件包中。否則,沒有問題。 – Ravi 2012-04-26 12:23:21

+4

關於符號鏈接的第二點在這個問題上爲我工作......謝謝! – 2013-01-09 11:26:58

+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/ – 2013-02-02 02:59:54

64

對於那些在OSX,我用下面的二進制得到的libpng和libjpeg的安裝系統範圍:因爲我已經安裝了PIL(通過PIP上的virtualenv)

libpng & libjpeg for OSX

,我跑:

pip uninstall PIL 
pip install PIL --upgrade 

這解決了我的decoder JPEG not available錯誤。

UPDATE(14年4月24日):PIP的

新版本需要附加標誌從外部來源下載庫(包括PIL)。請嘗試以下操作:

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

欲瞭解更多信息如下回答:pip install PIL dont install into virtualenv

更新2

如果在OSX小牛,你要設置ARCHFLAGS標誌爲@RicardoGonzales comments below

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

它沒有爲我工作 – FRD 2012-11-28 20:06:06

+1

謝謝,這對我很好,在10.8.2(山獅) – Aea 2013-01-08 01:56:14

+0

如果安裝後不起作用,嘗試重新啓動。 – danielcorreia 2013-01-21 12:28:41

16

在Fedora 17上,我不得不安裝libjpeg-devel事後重新安裝PIL

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

RHEL/CentOS也是如此。 – 2014-10-27 02:02:22

0

首先,我不得不刪除蟒蛇文件夾的隱藏文件夾的用戶/應用程序數據(這是創造出巨大的頭痛),除了卸載Python的。然後我安裝WinPython分佈:http://code.google.com/p/winpython/其中包括PIL

+4

windows下的Python開發很痛苦。我建議不要。 – eviltnan 2013-07-24 09:05:35

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支持WebM」,這意味着它的作品。

但是,如果編輯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/

然後,最後,它的作品!

+0

嗨,我想我有一個python路徑不工作的問題,因爲安裝PIL統計--JPEG支持IS可用。然而,實際上使用.jpeg圖像進行選擇會導致解碼器jpeg錯誤。 http://stackoverflow.com/questions/18504835/pil-decoder-jpeg-not-available-on-ubuntu-x64 – 2013-08-29 11:20:30

+0

謝謝你。這對Ubuntu 12.04 – 2013-12-19 21:21:34

+0

工作現在在我的Ubuntu 12很好地工作。 – keni 2014-03-26 08:20:53

28

這是爲我工作的唯一方法。安裝軟件包並重新安裝PIL不起作用。

在Ubuntu上,安裝所需的軟件包:

sudo apt-get install libjpeg-dev 

(您可能還需要安裝libfreetype6 libfreetype6-dev zlib1g-dev使其他解碼器)。

然後用枕頭代替PIL:

pip uninstall PIL 
pip install pillow 
+0

我前段時間做過這個,今天突然又出現了錯誤。升級枕頭解決了問題:'安裝枕頭 - 升級'。 – 2015-08-11 14:29:48

1

這裏同樣的問題,JPEG support available,但仍然得到IOError: decoder/encoder jpeg not available,除了我使用枕頭而不是PIL。

我嘗試了所有的上述多,但許多小時後,我意識到,使用sudo pip install並不如我所料與virtualenv工作,在組合。傻我。

使用sudo在新shell 有效的啓動命令(我的這種理解可能不完全正確)在virtualenv中沒有被激活,這意味着該軟件包將被安裝在全局環境來代替。 (這搞砸了,我想我有2個不同的安裝枕頭。)

我清理了一些東西,把用戶改爲root並重新安裝在virtualenv中,現在它工作。
希望這會幫助別人!

+0

Yeppers也是我的問題 – 2015-04-15 01:15:55

3

我太新手評論zeantsoi職務;(。所以在這裏他什麼,我需要做對OSX上求解10.9.1

IOError: decoder jpeg not available

1)安裝的Xcode工具(打開你的終端並執行:xcode-select --install) - 取自此信息:http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

Can't install PIL after Mac OS X 10.9

2)從這個鏈接的libpng安裝的libjpeg和包(組合安裝程序)

3)重啓(不知道它是強制性的)

4),因爲我最初安裝PIL具有發行前)

希望這有助於和唐與運行pip install -I PIL重新安裝PIL( 「T迷惑更多...

_oho

11

在Mac OS X小牛(10.9.3),我做的解決了這個如下:

通過釀造(包管理系統)安裝的libjpeg

brew install libjpeg

重新安裝枕頭(我用枕頭代替PIL)

pip install -I pillow

+2

這可能是由於我安裝brew的一個單獨的問題,但是我必須在安裝Pillow之前先'brew unlink jpeg && brew link jpeg'。 – Lucas 2014-06-17 17:50:37

9

我已經使用Pillow,並得到了同樣的錯誤。 按照其他人的建議,嘗試安裝libjpeglibjpeg-dev,但被告知已安裝(更新版本)版本。

在年底時採取了重新安裝Pillow

sudo pip uninstall Pillow 
sudo pip install Pillow 
11
apt-get install libjpeg-dev 
apt-get install libfreetype6-dev 
apt-get install zlib1g-dev 
apt-get install libpng12-dev 

安裝這些,並確保與PIP安裝PIL因爲我是從源出於某種原因沒有工作

編譯它
+0

所有必需的[依賴關係]列表(https://pillow.readthedocs.org/en/latest/installation.html#linux-installation)。 – Paolo 2015-07-06 09:12:43

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年和其他人!

乾杯

14

羅洛的答案是優秀的,但我不得不繞過PIP緩存(PIP與7中引入),否則將無法得到適當的重新編譯重新安裝枕頭! 的命令是:

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的)

+0

這在osx上也適用於我 – Fonix 2015-07-09 04:35:33

+0

感謝您的支持。 --no-cache-dir選項對我也有幫助 – dranxo 2015-07-14 15:57:34

+0

謝謝,這在Debian上適用於我。 – Damian 2015-09-05 16:20:03

1

於Fedora

0123安裝所需的庫

安裝先決條件
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的安裝的libjpeg-devel的的zlib-devel的包/紅帽

相關問題