Python Görüntü Kitaplığı, "kod çözücü JPEG kullanılamıyor" mesajı ile başarısız oluyor - PIL


305

PIL sistemimde JPEG'i destekliyor.

Ne zaman bir yükleme yapmak, benim kod ile başarısız:

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

Bunu nasıl çözebilirim?


22
Bu geçerli bir soru. PIL ünlü bir Python Kütüphanesi ve bazı linux sistemlerinde garip bir hata veriyor. Bu soru ve cevap bana yardımcı oldu. Bu tipik bir SO sorusudur.
neves

PRAGMATIST ve OKB, SO'ya değil ServerFault'a ait olduğunu söylüyor. Ancak kaç programcı bu probleme çarptı? Soruyu ServerFault'a taşımak ve SO'ya bir yönlendirme bırakmak için oy kullanıyorum.
FlipMcF

1
Belki bunu okuyabilir ve deneyebilirsiniz: stackoverflow.com/questions/18504835/…
Wee

1
@dkt Yastık kullanıyorum ve buradayım çünkü bu konuya yeni başladım.
Stephen Tetreault

1
@dkt Biliyorum, sorunun hala devam ettiğini belirttim.
Stephen Tetreault

Yanıtlar:


488

libjpeg-dev yastık (veya PIL) ile jpegleri işleyebilmek için gereklidir, bu yüzden onu takmanız ve yastığı yeniden derlemeniz gerekir. Ayrıca Ubuntu 14.04'te libjpeg8-dev'e ihtiyaç duyulduğu anlaşılıyor

Hala PIL kullanıyorsanız, bugünlerde gerçekten yastık kullanmalısınız, bu yüzden önce pip uninstall PIL önce bu talimatları değiştirmek için önce veya PIL ile yapışmak için iyi bir nedeniniz varsa, "yastık" yerine "PIL" yerine aşağıdaki ).

Ubuntu'da:

# 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

Bu işe yaramazsa, 64bit veya 32bit Ubuntu'da olup olmadığınıza bağlı olarak aşağıdakilerden birini deneyin.

Ubuntu x64 için:

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

Veya Ubuntu 32bit için:

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/

Sonra yastığı tekrar takın:

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

(Yorumlardan geri bildirimleri içerecek şekilde düzenlenir. Bunun 32bit için farklı olduğu için Charles Offenbacher ve kullanımını önerdiği için t-mart için teşekkürler --no-cache-dir).


1
Sorun iki python paketi vardı. Biri ubuntu ile, diğeri Zope Server'a ait. Her nasılsa, yanlış pakete yanlış yüklediğim için kütüphane bozuldu. Aksi takdirde sorun yoktur.
Ravi

2
Kayıt için, sadece x86_64 üzerinde çalışır, ben çalıştırmak zorunda kaldı: 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
Sadece PIL ile başlayan herkes için eski ve artık gerçekten korunmaz not etmelisiniz. Projenizdeki görüntülerle çalışmak istiyorsanız, güncellenen ve bakımı yapılan çatal veya PIL'i kullanın.
Dhiraj Thakur

1
@ 3 saat sonra ikinci seçenek benim için çalıştı teşekkürler çok yastık çok dumbass
Akshay Mukadam

5
Pip'in son sürümleri indirilen paketleri ve derlemelerini önbelleğe almalıdır. Kesinlikle, pip installilk kez işler için çok uzundu , ancak daha sonra kaldırma ve (yeniden) yüklemeler şüpheyle hızlıydı. Her neyse , yukarıdaki yöntemler koşana kadar benim için işe yaramadı pip install --no-cache-dir pillow. İyi şanslar!
t-mart

63

OSX'te olanlar için, sistem genelinde libpng ve libjpeg'i yüklemek için aşağıdaki ikili dosyayı kullandım:

OSX için libpng ve libjpeg

Zaten PIL yüklü olduğundan (bir virtualenv üzerinde pip yoluyla), koştum:

pip uninstall PIL
pip install PIL --upgrade

Bu decoder JPEG not availablebenim için hatayı çözdü .

GÜNCELLEME (24.04.2014) :

Pip'in daha yeni sürümleri, harici kaynaklardan kitaplıkları (PIL dahil) indirmek için ek bayraklar gerektirir. Takip etmeyi dene:

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

Ek bilgi için aşağıdaki cevaba bakınız: pip install PIL dont install virtualenv

GÜNCELLEME 2 :

OSX Mavericks üzerinde ise, aşağıdaki @RicardoGonzales yorumlarıARCHFLAGS olarak bayrağı ayarlamak isteyeceksiniz :

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

Mavericks (10.9) yükselttikten sonra bu sorun vardı. Aşağıdaki SO yazı benim için sorunu çözdü. Aşağı kaydırarak yüklemek komut satırı araçları @Formulka tarafından comment
tatlar

Ubuntu 12.04 64 bit kullanıyorsanız, zeantsoi'nin çözümünü deneyin, OSX için yaptığını biliyorum ama denedim ve benim için çalıştı.
kilitlenme

Bu hatayı aldım: Gereksinim pilini karşılayan herhangi bir donloadload bulunamadı
RicardoGonzales

@RicardoGonzales, muhtemelen ek bayraklar geçirmenizi gerektiren bir pip sürümü üzerinde çalışıyorsunuz. Lütfen cevabımın güncellemesine bakın.
zeantsoi

@zeantsoi şimdi paketi indirip kuruyor ancak "Temizlik" mesajından sonra. Hata şu anlama gelir: "-c import setuptools, tokenize; __ dosya ... ..." herhangi bir tavsiye?
RicardoGonzales

29

Benim için işe yarayan tek yol bu. Paketleri yüklemek ve PIL'i yeniden yüklemek işe yaramadı.

Ubuntu'da gerekli paketi yükleyin:

sudo apt-get install libjpeg-dev

(ayrıca yüklemek isteyebilirsiniz libfreetype6 libfreetype6-dev zlib1g-dev diğer kod çözücüleri etkinleştirmek ).

Sonra PIL'i yastıkla değiştirin:

pip uninstall PIL
pip install pillow

Bunu bir süre önce yaptım ve aniden hata bugün yeniden ortaya çıktı. Yükseltme yastık sorunu düzeltildi: pip install pillow --upgrade.
Dennis Golomazov

21

Ubuntu 12.04 üzerinde takip edilen çalışmalar:

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 desteği mevcut" ifadesini gördüğünüzde, bunun işe yaradığı anlamına gelir.

Ancak, jpeg resminizi düzenlerken hala çalışmıyorsa, python yolunu kontrol edin !! python yolum cevapsız /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/, bu yüzden~/.bashrc bu dosyaya aşağıdaki kodu ekleyin :

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

sonra, nihayet, işe yarıyor !!


merhaba, ben - PEG istatistikleri mevcut olduğu PIL istatistikleri yükleme çünkü çalışmıyor python yolu ile ilgili bir sorun yaşıyorum düşünüyorum. ancak, aslında .jpeg görüntüleri ile pil tercihleri ​​yapmak dekoder jpeg hatalarına neden olur. stackoverflow.com/questions/18504835/…
Lucas Ou-Yang

16

Fedora 17'de kurmak libjpeg-develve daha sonra yeniden yüklemek zorunda kaldım PIL:

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

1
Aynı şey RHEL / CentOS için de geçerlidir.
Jakub Roztocil

14

Rolo'nun cevabı mükemmel, ancak pip önbelleğini (pip 7 ile tanıtılarak) atlayarak yastığı yeniden kurmak zorunda kaldım, aksi takdirde düzgün bir şekilde yeniden derlenmeyecek! Komut:

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

ve şu günlükleri okuyarak Yastık'ın düzgün yapılandırılıp yapılandırılmadığını görebilirsiniz:

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 desteğini görebildiğiniz gibi, tiff ve benzeri etkin, çünkü daha önce gerekli kütüphaneleri apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev) aracılığıyla kurdum


Bunun için teşekkürler.
--No

12

Mac OS X Mavericks'te (10.9.3), bunu aşağıdakileri yaparak çözdüm:

Brew tarafından libjpeg kurulumu (paket yönetim sistemi)

demlemek yüklemek libjpeg

yastığı yeniden yükle (PIL yerine yastık kullanıyorum)

pip install -I yastık


2
Bu demlemek kurulumumda ayrı bir sorundan kaynaklanıyor olabilir, ancak brew unlink jpeg && brew link jpegYastık takmadan önce yapmam gerekiyordu .
Lucas

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

Bunları yükleyin ve PIL'i pip ile kurduğunuzdan emin olun çünkü kaynağından derledim ve bir nedenden dolayı çalışmadı



9

Zaten kullanıyordum Pillowve aynı hatayı aldım. Yükleme denendi libjpegveyalibjpeg-dev başkaları tarafından önerildiği gibi (daha yeni) bir sürümün zaten yüklü olduğu söylendi.

Sonunda tüm gereken yeniden yükleme oldu Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow

3

Ben zeantsoi post yorum yapmak için çok acemi değilim; (İşte burada onun OSX 10.9.1 çözüldü yapmak için ne gerekiyordu

IOError: kod çözücü jpeg mevcut değil

1) Xcode araçlarını yükleyin (terminalinizi açın ve yürütün:) xcode-select --install- bu gönderiden alınmıştır: yayından Mac OS X 10.9'dan sonra PIL yüklenemiyor

2) şu bağlantıdan libpng ve libjpeg paketini (birleşik yükleyici ) yükleyin : http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) yeniden başlat (zorunlu olduğundan emin değilim)

4) PIL'i yeniden çalıştırın pip install -I PIL(sorunu yaşamadan önce PIL'i ilk kurduğum gibi)

Umarım bu yardım ve daha fazlasını karıştırmayın ...

_oho


2

Bu soru bir süre önce gönderildi ve cevapların çoğu da oldukça eski. Bu yüzden anlamaya çalışarak saatler harcadığımda hiçbir şey işe yaramadı ve bu yazıdaki tüm önerileri denedim.

Django avatar formumda bir JPG yüklemeye çalışırken hala standart JPEG hataları alıyordum:

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

Sonra Ubuntu 12.04 için depoyu kontrol ettim ve için ekstra paketler fark ettim libjpeg. Bunları yükledim ve sorunum çözüldü:

sudo apt-get install libjpeg62 libjpeg62-dev

Bu kaldırıldı yükleme libjpeg-dev, libjpeg-turbo8-devve libjpeg8-dev.

Umarım bu 2015 yılında ve ötesinde birine yardımcı olur!

Şerefe


1

Burada aynı sorun, JPEG support availableama yine de var IOError: decoder/encoder jpeg not available, dışında PIL değil Yastık kullanın.

Yukarıda ve üzeri tüm çalıştı, ama sonra birçok saat kullanıyorum fark sudo pip installbeklediğim gibi kombinasyon halinde, işi yapmazvirtualenv . Aptal bana.

sudoKomutu etkin bir şekilde kullanmak , virtualenv'in etkinleştirilmediği yeni bir kabukta (bunu anlamam tamamen doğru olmayabilir) , yani paketlerin global ortama kurulacağı anlamına gelir. (Bu işleri mahvetti, sanırım 2 farklı Yastık kurulumum vardı.)

Bir şeyleri temizledim, kullanıcıyı root olarak değiştirdim ve virtualenv'e yeniden yükledim ve şimdi çalışıyor.
Umarım bu birine yardımcı olacaktır!


1

Fedora için

Önkoşulları yükleyin
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Şimdi Yastık takın

sudo pip install pillow

Not - libjpeg ve zlib için Fedora / CentOS / Red Hat'a libjpeg-devel ve zlib-devel paketleri kuruyoruz


0

İlk olarak Python'u kaldırmanın yanı sıra gizli klasör kullanıcısı / appData'daki (büyük baş ağrıları yaratıyordu) python klasörlerini silmek zorunda kaldım. Sonra WinPython Dağıtımını kurdum: http://code.google.com/p/winpython/ PIL içeren


4
Pencerelerin altında piton gelişimi acı vericidir. Yapmamanızı tavsiye ederim.
eviltnan

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.