2009-09-28 37 views
11

Tôi không thể sử dụng PIL vì nó không thể tìm thấy libjpeg của tôi!Python PIL không thể tìm thấy "libjpeg" của tôi

Trước tiên, tôi đã cài đặt mặc định PIL. Và khi tôi chạy selftest.py, nó đã cho tôi:

IOError: decoder jpeg not available 1 
items had failures: 1 of 57 in 
selftest.testimage 
***Test Failed*** 1 failures. 
*** 1 tests of 57 failed. 

Sau đó, tôi làm theo hướng dẫn trực tuyến để thay đổi PIL của setup.py để

JPEG_ROOT = "/usr/lib" 

Bởi vì khi tôi locate libjpeg, đây là những gì tôi nhận được:

locate libjpeg 
/usr/lib/libjpeg.so.62 
/usr/lib/libjpeg.so.62.0.0 
/usr/lib64/libjpeg.so.62 
/usr/lib64/libjpeg.so.62.0.0 
/usr/share/doc/libjpeg-6b 
/usr/share/doc/libjpeg-6b/README 
/usr/share/doc/libjpeg-6b/usage.doc 
/var/cache/yum/base/packages/libjpeg-6b-37.i386.rpm 
/var/cache/yum/base/packages/libjpeg-6b-37.x86_64.rpm 

Vì vậy, tôi đã chạy lại setup.py install ... và đã làm selftest.py. Và tôi vẫn gặp lỗi tương tự!

Trả lời

19

Có ít nhất 3 bộ tiêu đề mà bạn sẽ muốn cài đặt. 1 nhiều hơn nếu bạn muốn để đối phó với

freetype Tiff của, libjpeg, zlib tất cả trong số đó sẽ nằm trong gói sau trên CentOS:

== 32 Bit: zlib-devel.i386 libjpeg-devel. i386 freetype-devel.i386

== 64 Bit: zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64

Như bạn đã làm trước đó, bạn sẽ muốn chỉnh sửa variabl sau es trong file setup.py:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

Thiết có giá trị đến/usr/lib hoặc/usr/lib64 dựa trên nền tảng của bạn. Sau khi hoàn tất, bạn có thể sẽ muốn chạy

python setup.py build --force 
python setup.py install 

Điều này sẽ buộc xây dựng lại tất cả lib của bạn cho PIL và cài đặt lại chúng.

+0

Cảm ơn bạn! FWIW, đây là những gì tôi đã làm (trên một hộp 64-bit): 'sudo yum cài đặt zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64' sau đó' sudo pip install pil' (Điều này đòi hỏi bạn phải có pip quản lý gói đã được cài đặt.) – DPlusV

3

Bạn cũng cần có tiêu đề libjpeg, không chỉ thư viện. Những gói này thường được gọi là một cái gì đó kết thúc trong tiêu đề hoặc dev, tùy thuộc vào phân phối bạn có.

+0

Cảm ơn. Làm cách nào để nhận tiêu đề? Tôi có phân phối CentOS. Tôi đã "định vị libjpeg" và không thể tìm thấy bất kỳ thứ gì kết thúc bằng .header – TIMEX

+2

Chúng dường như được gọi là libjpeg-devel trên CentOS. –

+0

Sử dụng ‘công cụ quản lý gói’ để cài đặt 'libjpeg-devel'. Lưu ý rằng có thể có các gói '-devel' khác mà bạn cần cài đặt cho các định dạng khác, ví dụ. 'libpng-devel'. – bobince

0

Hôm nay tôi đã đối mặt với cùng một vấn đề và tôi đã tìm thấy giải pháp. Về cơ bản nó liên quan đến việc loại bỏ PIL, cài đặt lipjpeg thông qua Fink và cài đặt lại PIL.

Tôi đã viết một bước cho biết article cách thực hiện điều đó. Nếu thú vị kiểm tra này ra.

+4

Liên kết tới bài viết không hoạt động (nữa). –

3

Tôi gặp vấn đề tương tự. Trong trường hợp của tôi, tôi cần phải thiết lập:

JPEG_ROOT="/usr/lib64/" 

thay vì:

JPEG_ROOT="/usr/lib/" 

Chúc may mắn.

1

Bạn cũng có thể thử sử dụng Pillow thay vì PIL.

Gối là một ngã ba PIL để "thúc đẩy phát triển hoạt động của PIL". Trong các phiên bản 1.7.0 và 1.7.1, họ đã thực hiện một số thay đổi để hỗ trợ đa kiến ​​trúc (xem changelog).

+0

cùng vấn đề với Gối; (Và giải pháp 'JPEG_ROOT ="/usr/lib64/"' không giúp cho Gối –

Các vấn đề liên quan