Python Image Library ล้มเหลวด้วยข้อความ“ ถอดรหัส 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 Library ที่มีชื่อเสียงและให้ข้อผิดพลาดแปลก ๆ ในระบบ linux บางระบบ คำถามนี้และคำตอบก็ช่วยฉันได้ มันเป็นคำถาม SO ทั่วไป
neves

PRAGMATIST และ OCD ในตัวฉันบอกว่ามันอยู่ใน ServerFault ไม่ใช่ SO แต่มีโปรแกรมเมอร์กี่คนที่ประสบปัญหานี้ ฉันลงคะแนนเพื่อย้ายคำถามไปยัง ServerFault และออกจากการเปลี่ยนเส้นทางใน SO
FlipMcF

1
บางทีคุณสามารถอ่านและลองใช้งานได้: stackoverflow.com/questions/18504835/…
Wee

1
@dkt ฉันใช้หมอนและมาที่นี่เพราะฉันเพิ่งตีปัญหานี้
Stephen Tetreault

1
@dkt ฉันรู้ว่าฉันแค่ระบุว่าปัญหายังคงมีอยู่ทั้งหมด
Stephen Tetreault

คำตอบ:


488

libjpeg-dev จำเป็นต้องสามารถประมวลผล jpegs ด้วยหมอน (หรือ PIL) ดังนั้นคุณต้องติดตั้งแล้วจึงทำการคอมไพล์หมอนอีกครั้ง ดูเหมือนว่า libjpeg8-dev นั้นจำเป็นสำหรับ Ubuntu 14.04

หากคุณยังคงใช้ 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

หากวิธีนี้ไม่ได้ผลให้ลองใช้วิธีใดวิธีหนึ่งด้านล่างขึ้นอยู่กับว่าคุณใช้ Ubuntu แบบ 64 บิตหรือ 32 บิต

สำหรับ 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

(แก้ไขเพื่อรวมข้อเสนอแนะจากความคิดเห็นขอบคุณ Charles Offenbacher สำหรับการชี้ให้เห็นถึงความแตกต่างสำหรับ 32 บิตและ t-mart สำหรับการแนะนำการใช้งาน--no-cache-dir)


1
ปัญหาคือฉันมีแพ็คเกจหลามสองชุด อันที่มาพร้อมกับ Ubuntu และอีกอันที่เป็นของ Zope Server อย่างใดห้องสมุดเสียหายเพราะฉันติดตั้งไม่ถูกต้องในแพคเกจที่ไม่ถูกต้อง มิฉะนั้นจะไม่มีปัญหา
Ravi

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 ควรทราบว่าล้าสมัยและไม่ได้รับการดูแลรักษาอีกต่อไป หากคุณต้องการทำงานกับภาพในโครงการของคุณให้ใช้หมอนที่ได้รับการปรับปรุงและดูแล fork หรือ PIL
Dhiraj Thakur

1
@Rolo หลังจาก 3 ชั่วโมงตัวเลือกที่สองของคุณใช้งานได้สำหรับฉันขอบคุณมากหมอนงี่เง่า
Akshay Mukadam

5
pip เวอร์ชันล่าสุดต้องแคชแพ็กเกจที่ดาวน์โหลดและการรวบรวม แน่นอนว่ามันเป็นสิ่งที่มีความยาวเป็นอย่างมากpip installในครั้งแรก แต่หลังจากนั้นการถอนการติดตั้งและการติดตั้ง (ใหม่) ที่ตามมานั้นรวดเร็วอย่างน่าสงสัย อย่างไรก็ตามpip install --no-cache-dir pillowวิธีการดังกล่าวข้างต้นไม่ทำงานสำหรับฉันจนกว่าฉันจะวิ่ง โชคดี!
t-mart

63

สำหรับผู้ที่อยู่บน OSX ฉันใช้ไบนารีต่อไปนี้เพื่อรับ libpng และ libjpeg ติดตั้งระบบทั่ว:

libpng & libjpeg สำหรับ OSX

เนื่องจากฉันได้ติดตั้ง PIL แล้ว (ผ่าน pip บน virtualenv) ฉันจึงวิ่ง:

pip uninstall PIL
pip install PIL --upgrade

วิธีนี้แก้ไขdecoder JPEG not availableข้อผิดพลาดสำหรับฉัน

อัปเดต (4/24/14) :

pip รุ่นที่ใหม่กว่าต้องการแฟล็กเพิ่มเติมเพื่อดาวน์โหลดไลบรารี (รวมถึง PIL) จากแหล่งภายนอก ลองทำสิ่งต่อไปนี้:

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

ดูคำตอบต่อไปนี้สำหรับข้อมูลเพิ่มเติม: pip install PIL ไม่ได้ติดตั้งลงใน virtualenv

อัปเดต 2 :

หากใน OSX Mavericks คุณจะต้องตั้งค่าARCHFLAGSสถานะเป็นความคิดเห็น @RicardoGonzales ด้านล่าง :

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 แต่ฉันลองแล้วก็ใช้งานได้
หยุดชะงัก

ฉันได้รับข้อผิดพลาดนี้: ไม่พบ donwnloads ที่ตรงตามข้อกำหนด pil
RicardoGonzales

@RicardoGonzales คุณอาจใช้งาน pip เวอร์ชันที่คุณต้องผ่านการตั้งค่าสถานะเพิ่มเติม โปรดดูการอัปเดตคำตอบของฉัน
zeantsoi

@zeantsoi ตอนนี้กำลังดาวน์โหลดแพ็คเกจและติดตั้ง แต่หลังจากข้อความ "Cleaning up" ฉันได้รับข้อผิดพลาดหมายถึง: "-c นำเข้า setuptools, tokenize; __ ไฟล์ ... ... " คำแนะนำใด ๆ ?
RicardoGonzales

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

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 พร้อมใช้งาน" ซึ่งหมายความว่าใช้งานได้

แต่ถ้ามันยังไม่ทำงานเมื่อคุณแก้ไขภาพ jpeg ของคุณให้ตรวจสอบเส้นทางของหลาม !! ไม่พบเส้นทางหลามของฉัน/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/

จากนั้นในที่สุดก็ใช้งานได้ !!


สวัสดีฉันคิดว่าฉันมีปัญหากับเส้นทางของหลามไม่ทำงานเนื่องจากติดตั้ง PIL stats ที่ --JPEG รองรับนั้นใช้ได้ อย่างไรก็ตามการทำ pil opts ด้วยภาพ. jpeg ทำให้เกิดข้อผิดพลาดในการถอดรหัส 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

14

คำตอบของ Rolo นั้นยอดเยี่ยม แต่ฉันต้องติดตั้ง Pillow โดยการข้าม pip cache (แนะนำโดย 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)


ขอบคุณสำหรับสิ่งนี้. ตัวเลือก --no-cache-dir ช่วยฉันด้วย
dranxo

12

ใน Mac OS X Mavericks (10.9.3) ฉันแก้ไขได้โดยทำดังนี้

ติดตั้ง libjpeg โดยชง (ระบบการจัดการบรรจุภัณฑ์)

ชงติดตั้ง libjpeg

ติดตั้งหมอน (ฉันใช้หมอนแทน PIL)

pip install -I pillow


2
อาจเป็นเพราะปัญหาแยกต่างหากกับการติดตั้ง Brew ของฉัน แต่ฉันต้องbrew unlink jpeg && brew link jpegติดตั้ง Pillow ก่อน
Lucas

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

ติดตั้งเหล่านี้และอย่าลืมติดตั้ง PIL ด้วย pip เพราะฉันรวบรวมจากแหล่งที่มาและด้วยเหตุผลบางอย่างมันไม่ทำงาน


รายการของที่จำเป็นทั้งหมดอ้างอิง
เปาโล

9

ฉันใช้อยู่แล้วPillowและได้รับข้อผิดพลาดเดียวกัน พยายามติดตั้งlibjpegหรือlibjpeg-devแนะนำโดยผู้อื่น แต่ได้รับแจ้งว่ามีการติดตั้งเวอร์ชัน (ใหม่กว่า) แล้ว

ในที่สุดสิ่งที่ต้องทำทั้งหมดคือติดตั้งใหม่Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow

3

ฉันมือใหม่มากเกินไปที่จะแสดงความคิดเห็น zeantsoi โพสต์; (. ดังนั้นนี่คือสิ่งที่เขาต้องทำเพื่อแก้ไขบน OSX บน 10.9.1

IOError: ถอดรหัส jpeg ใช้งานไม่ได้

1) ติดตั้งเครื่องมือ Xcode (เปิดเทอร์มินัลของคุณและดำเนินการ:) xcode-select --install- นำมาจากโพสต์นี้:ไม่สามารถติดตั้ง PIL หลังจาก Mac OS X 10.9

2) ติดตั้งแพคเกจ libpng และ libjpeg (ตัวติดตั้งคอมโบ) จากลิงค์นี้: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) รีบูต (ไม่แน่ใจว่าเป็นข้อบังคับ)

4) ติดตั้ง PIL อีกครั้งพร้อมเรียกใช้pip install -I PIL (เนื่องจากฉันได้ติดตั้ง PIL ไว้ก่อนแล้วจึงมีปัญหา)

หวังว่าความช่วยเหลือนี้และอย่าสับสนมากขึ้น ...

_oho


2

คำถามนี้ถูกโพสต์เมื่อไม่นานมานี้และคำตอบส่วนใหญ่ก็ค่อนข้างเก่าเช่นกัน ดังนั้นเมื่อฉันใช้เวลาหลายชั่วโมงในการคิดสิ่งนี้ก็ไม่มีอะไรทำงานและฉันได้ลองคำแนะนำทั้งหมดในโพสต์นี้

ฉันยังคงได้รับข้อผิดพลาด JPEG มาตรฐานเมื่อพยายามอัปโหลด JPG ในรูปแบบ avatar ของ Django ของฉัน:

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

แล้วฉันจะตรวจสอบพื้นที่เก็บข้อมูลสำหรับอูบุนตู 12.04 libjpegและพบแพคเกจพิเศษบางอย่างสำหรับ ฉันติดตั้งสิ่งเหล่านี้แล้วและปัญหาของฉันได้รับการแก้ไขแล้ว:

sudo apt-get install libjpeg62 libjpeg62-dev

การติดตั้งเหล่านี้ถูกลบออกlibjpeg-dev, และlibjpeg-turbo8-devlibjpeg8-dev

หวังว่านี่จะช่วยให้ใครบางคนในปี 2558 และปีต่อ ๆ ไป!

ไชโย


1

ปัญหาเดียวกันที่นี่JPEG support availableแต่ก็ยังได้IOError: decoder/encoder jpeg not availableยกเว้นฉันใช้ Pillow และไม่ใช่ PIL

ฉันลองทั้งหมดข้างต้นและอื่น ๆ อีกมากมาย แต่หลังจากผ่านไปหลายชั่วโมงฉันก็ตระหนักว่าการใช้งานsudo pip installไม่ได้อย่างที่คาดหวังเมื่อใช้ร่วมvirtualenvไม่ได้ผลตามที่ฉันคาดหวังในการรวมกันกับฉันโง่

การใช้งานการsudoเรียกใช้คำสั่งในเชลล์ใหม่อย่างมีประสิทธิภาพ(ความเข้าใจของฉันเกี่ยวกับสิ่งนี้อาจไม่ถูกต้องทั้งหมด)โดยที่ไม่ได้เปิดใช้งาน virtualenv หมายความว่าแพ็คเกจจะถูกติดตั้งในสภาพแวดล้อมแบบโกลบอลแทน (สิ่งนี้เกิดความสับสนขึ้นฉันคิดว่าฉันมีการติดตั้งหมอน 2 แบบที่แตกต่างกัน)

ฉันทำความสะอาดสิ่งต่าง ๆ เปลี่ยนผู้ใช้เป็นรูทและติดตั้งใหม่ใน 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 เรากำลังติดตั้งแพ็คเกจlibjpeg-develและzlib-develใน Fedora / CentOS / Red Hat


0

ก่อนอื่นฉันต้องลบโฟลเดอร์ไพ ธ อนใน user folder / appData ที่ซ่อนอยู่ (นั่นเป็นการสร้างอาการปวดหัวขนาดใหญ่) นอกเหนือจากการถอนการติดตั้ง Python จากนั้นฉันติดตั้งการกระจาย WinPython: http://code.google.com/p/winpython/ซึ่งมี PIL


4
การพัฒนา Python ใน windows นั้นเจ็บปวด ฉันไม่แนะนำให้ทำ
eviltnan

0

สำหรับผู้ที่ใช้ Mac OS Mountain Lion ฉันได้ติดตาม anwser of zeantsoi แต่มันไม่ทำงาน

ในที่สุดฉันก็ลงเอยด้วยวิธีแก้ปัญหาของโพสต์นี้: http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

ตอนนี้ฉันกำลังใช้งานสคริปต์ของฉันสำหรับ jpeg อย่างมีความสุข!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.