Python Image Library failed with message "Decoder JPEG not available" - PIL

PIL obsługuje JPEG w moim systemie.

Ilekroć robię upload, mój kod zawodzi:

File "PIL/Image.py", line 375, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
Jak mogę to rozwiązać?
Author: FlipMcF, 2012-01-18

15 answers

Libjpeg-dev jest wymagany do przetwarzania JPEG z pillow( lub PIL), więc musisz go zainstalować, a następnie przekompilować pillow. Wydaje się również, że libjpeg8-dev jest potrzebny na Ubuntu 14.04

Jeśli nadal używasz PIL, to naprawdę powinieneś używać poduszki w dzisiejszych czasach, więc najpierw pip uninstall PIL przed wykonaniem tych instrukcji, aby się przełączyć, lub jeśli masz dobry powód do trzymania się PIL, wymień "poduszkę"na" PIL " poniżej).

Na 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

Jeśli to nie działa, spróbuj jednego z poniższych, w zależności od tego, czy jesteś na 64-bitowym lub 32-bitowym Ubuntu.

Dla 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

Lub dla 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/

Następnie ponownie zainstaluj poduszkę:

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

(zmiany w celu uwzględnienia opinii z komentarzy. Dzięki Charles Offenbacher za wskazanie tego różni się od 32bit, A t-mart za sugerowanie użycia --no-cache-dir).

 477
Author: Rolo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 16:12:16

Dla tych na OSX, użyłem następujących binarnych, aby uzyskać libpng i libjpeg zainstalowany w całym systemie:

Libpng & libjpeg dla OSX

Ponieważ miałem już zainstalowany PIL (przez pip na virtualenv), uruchomiłem:

pip uninstall PIL
pip install PIL --upgrade

To rozwiązało decoder JPEG not available Błąd dla mnie.

Aktualizacja (4/24/14):

Nowsze wersje pip wymagają dodatkowych FLAG do pobierania bibliotek (w tym PIL) ze źródeł zewnętrznych. Spróbuj:

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

Patrz: odpowiedź na DODATKOWE info: pip install PIL dont install into virtualenv

Aktualizacja 2:

Jeśli na OSX Mavericks, będziesz chciał ustawić flagę ARCHFLAGS jako @ RicardoGonzales komentarze poniżej :

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL
 64
Author: zeantsoi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:59

To jedyny sposób, który mi pomógł. Instalacja pakietów i ponowna instalacja PIL nie zadziałały.

Na ubuntu zainstaluj wymagany pakiet:

sudo apt-get install libjpeg-dev

(Możesz również zainstalować libfreetype6 libfreetype6-dev zlib1g-dev, aby włączyć inne dekodery).

Następnie zastąp PIL poduszką:

pip uninstall PIL
pip install pillow
 28
Author: Dennis Golomazov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-04 11:36:37

Poniższe działa na 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

Gdy zobaczysz "-- JPEG support available", oznacza to, że działa.

Ale jeśli nadal nie działa podczas edycji obrazu jpeg, sprawdź ścieżkę Pythona !! Moja ścieżka Pythona ominęła /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/, więc edytuję ~/.bashrc Dodaj następujący kod do tego pliku:

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

W końcu to działa!!
 21
Author: Jason Huang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-07 08:12:02

Na Fedorze 17 musiałem zainstalować libjpeg-devel a potem ponownie zainstalować PIL:

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL
 16
Author: Bengt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-03 17:35:30

Odpowiedź Rolo jest doskonała, jednak musiałem ponownie zainstalować poduszkę omijając PIP cache (wprowadzony z pip 7), inaczej nie zostanie poprawnie skompilowany!!! Polecenie to:

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

I możesz sprawdzić, czy poduszka została poprawnie skonfigurowana, czytając w logach to:

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

Jak widać Obsługa jpg, tiff i tak dalej jest włączona, ponieważ wcześniej zainstalowałem wymagane biblioteki przez apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)

 14
Author: daveoncode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-13 18:16:02

Na Mac OS X Mavericks (10.9.3), rozwiązałem to wykonując następujące czynności:

Install libjpeg by brew (System zarządzania pakietami)

Brew install libjpeg

Reinstall pillow (używam pillow zamiast PIL)

Pip install-i poduszka

 12
Author: moogoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-05 20:16:19
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

Zainstaluj je i pamiętaj, aby zainstalować PIL z pip, ponieważ skompilowałem go ze źródła i z jakiegoś powodu nie działał

 11
Author: EMP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-05 11:09:25

Już używałem Pillow i dostałem ten sam błąd. Próbowałem zainstalować libjpeg lub libjpeg-dev zgodnie z sugestią innych, ale powiedziano mi, że (nowsza) wersja jest już zainstalowana.

W końcu wystarczyło ponownie zainstalować Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow
 9
Author: Dimitris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-20 13:34:07

Jestem zbyt newbie, aby komentować post zeantsoi ;(. Więc tutaj jego co musiałem zrobić, aby rozwiązać na OSX na 10.9.1

IOError: decoder JPEG niedostępny

1) install Xcode tools (otwórz terminal i wykonaj: xcode-select --install) - zaczerpnięte z tego postu: nie można zainstalować PIL po Mac OS X 10.9

2) zainstaluj pakiet libpng i libjpeg (combo installer) z tego linku: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) reboot (Nie wiem, czy był obowiązkowy)

4) Zainstaluj ponownie PIL za pomocą run pip install -I PIL (ponieważ wcześniej zainstalowałem PIL przed wystąpieniem problemu)

Mam nadzieję, że to pomoże i nie mylić więcej ...

_oho

 3
Author: oho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:47

To pytanie zostało opublikowane dość dawno temu i większość odpowiedzi jest dość stara. Więc kiedy spędziłem godziny próbując to rozgryźć, nic nie działało i próbowałem wszystkich sugestii w tym poście.

Wciąż otrzymywałem standardowe błędy JPEG podczas próby przesłania JPG w mojej formie awatara Django:

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

Potem sprawdziłem repozytorium dla Ubuntu 12.04 i zauważyłem kilka dodatkowych pakietów dla libjpeg. Zainstalowałem je i mój problem został rozwiązany:

sudo apt-get install libjpeg62 libjpeg62-dev

Instalowanie tych usunięto libjpeg-dev, libjpeg-turbo8-dev, i libjpeg8-dev.

Mam nadzieję, że to pomoże komuś w roku 2015 i Później!

Cheers

 2
Author: nicorellius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-05 18:55:43

Ten sam problem tutaj, JPEG support available ale nadal mam IOError: decoder/encoder jpeg not available, tyle że używam poduszki a nie PIL.

Próbowałem wszystkich powyższych i więcej, ale powielu godzinach zdałem sobie sprawę, że używanie sudo pip install nie działa tak, jak oczekiwałem, w połączeniu z virtualenv. Głuptas ze mnie.

Użycie sudo skutecznie uruchamia polecenie w nowej powłoce (moje zrozumienie tego może nie być do końca poprawne) gdzie virtualenv nie jest aktywowany, co oznacza, że pakiety zostaną zainstalowane w globalnej środowisko zamiast tego. (to wszystko popsuło, myślę, że miałem 2 różne instalacje poduszki.)

Posprzątałem, zmieniłem użytkownika na roota i ponownie zainstalowałem w virtualenv i teraz działa.
Mam nadzieję, że to komuś pomoże!

 1
Author: kaka,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-16 20:02:55

Dla Fedory

Install pre-request
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Teraz zainstaluj poduszkę

sudo pip install pillow

Uwaga-dla libjpeg i Zlib instalujemy pakiety libjpeg-devel i Zlib-devel w Fedorze/CentOS/Red Hat

 1
Author: Ajinkya Bhosale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-21 11:18:45

Najpierw musiałem usunąć foldery Pythona w ukrytym folderze user / appData (co powodowało ogromne bóle głowy), oprócz odinstalowania Pythona. Następnie zainstalowałem dystrybucję WinPython: http://code.google.com/p/winpython / który obejmuje PIL

 0
Author: Jill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-05 22:51:22

Dla tych na Mac OS Mountain Lion, śledziłem anwser zeantsoi, ale to nie działa.

W końcu znalazłem rozwiązanie tego posta: http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

Teraz z radością uruchamiam mój skrypt dla jpeg !

 0
Author: Zhenyi Zhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-24 20:51:06