Làm cách nào để cài đặt thư viện hình ảnh python (PIL)?


35

Làm cách nào để cài đặt thư viện hình ảnh python (PIL) trên Ubuntu?

Tôi đã thử làm

sudo apt-get install python-imaging

nhưng bây giờ khi tôi chạy python selftest.py (tập lệnh tôi nhận được từ đâu đó trên trang web http://pythonware.com/products/pil/ ) tôi nhận được (trong số các thông báo cảnh báo khác):

...
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
...
*** 1 tests of 57 failed.

Có phải tôi đã làm hỏng PIL bằng cách nào đó - làm cách nào để khắc phục điều đó?

Có lẽ PIL vẫn ổn, nhưng "selftest.py" không thực sự là chương trình phù hợp để kiểm tra xem PIL có được cài đặt đúng không - làm cách nào khác để biết PIL có được cài đặt đúng hay không?

(Tôi đang sử dụng Ubuntu 12.04 LTS "Chính xác Pangolin").

(Điều cuối cùng tôi đang cố gắng làm là thêm một trình tạo mã vạch 2D vào một số mã python và tất cả các trình tạo mã vạch 2D mà tôi có thể tìm thấy được viết bằng python dường như đều sử dụng PIL).


2
Bạn có thể muốn thử sử dụng PIL trong một ứng dụng, có thể có vấn đề với selftest.py
Aaron Hill

1
Trong 18.04 có vẻ như bạn chỉ cần làm sudo apt-get install python-pilhoặc sudo apt-get install python3-pil.
Shule

^ Chắc chắn, sudo apt-get install python-pilchỉ làm việc cho tôi trên raspbian.
alecxe

Câu trả lời:


25

Một cái gì đó tương tự đã xảy ra với tôi, tôi đã giải quyết theo cách này

sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

Và thử cài đặt qua pip install PIL.

Thêm về những gì pipcó thể được tìm thấy ở đây . Nói tóm lại là một cách thuận tiện (và trở thành một cách chuẩn) để cài đặt thư viện python.

nếu nó tiếp tục thất bại, có thể là do PIL đang tìm kiếm các thư viện đó theo một đường dẫn khác.

Hóa ra các cài đặt APT đặt các thư viện dưới / usr / lib / x86_64-linux-gnu và PIL sẽ tìm kiếm chúng trong / usr / lib / . Vì vậy, bạn phải tạo liên kết tượng trưng cho PIL để xem chúng.

Hãy thử xem libjpeg và libz libs có tồn tại trong / usr / lib / x86_64-linux-gnu không và tạo liên kết tượng trưng theo cách này

sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so.62 /usr/lib/

Nguồn: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/


Điều này không hoạt động với tôi trên Ubuntu 12.04 64 bit.
Gus E

1
nếu nó phù hợp với nhu cầu của bạn, bạn có thể thử 'gối'. Đó là một sự thay thế cho PIL.
Hernantz

7
Bất cứ khi nào có thể, sử dụng pillow. Nó chủ yếu là PIL nhưng thực sự được duy trì.
Thane Brimhall

Gói zlib1g-dev không có sẵn, nhưng được gọi bằng gói khác. Điều này có thể có nghĩa là gói bị thiếu, đã bị lỗi thời hoặc chỉ có sẵn từ một nguồn khác E: Không thể định vị gói libjpeg E: Không thể định vị gói libjpeg-dev E: Không thể định vị gói libfreetype6-dev E: Gói 'zlib1g -dev 'không có ứng cử viên cài đặt
Aalok

Gói hình ảnh python trong Ubuntu 12.04 LTS được liên kết với thư viện JPEG và changelog đề cập đến việc phá vỡ đa mục tiêu trước tháng 7 năm 2011. Có lẽ điều này selftest.pycũng đã bị phá vỡ vì điều đó, nhưng điều đó không nhất thiết ảnh hưởng đến bất cứ điều gì khác.
Josip Rodin

30

Giải pháp trên không hoạt động với tôi trên Ubuntu 12.10 vì libjpeg không có sẵn trong kho lưu trữ.

Điều cuối cùng làm việc cho tôi là:

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

Nếu bạn gặp lỗi "Bạn phải đặt một số URI 'nguồn' vào nguồn.list của mình" thì hãy đảm bảo rằng /etc/apt/source.list có các mục deb-src khớp với các mục gỡ lỗi của bạn.

Sau đó, bạn phải liên kết các tệp từ vị trí thực tế của chúng trên máy chủ của bạn đến vị trí mà PIL mong đợi chúng.

Phiên bản 32 bit

sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/libz.so
sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/libfreetype.so

Phiên bản 64 bit

sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/libz.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/libfreetype.so

Cuối cùng, pip install PIL

Sự thành công!

nhập mô tả hình ảnh ở đây


Cập nhật tháng 9 năm 2014

Gối là một ngã ba hiện đại hơn của PIL.

#jpeg support
sudo apt-get install libjpeg-dev
#tiff support
sudo apt-get install libtiff-dev
#freetype support
sudo apt-get install libfreetype6-dev
#openjpeg200support (needed to compile from source)
wget http://downloads.sourceforge.net/project/openjpeg.mirror/2.0.1/openjpeg-2.0.1.tar.gz
tar xzvf openjpeg-2.0.1.tar.gz
cd openjpeg-2.0.1/
sudo apt-get install cmake
cmake .
sudo make install
#install pillow
pip install pillow

1
Hoạt động cho tôi vào ngày 13.04 với Gối mà không cần liên kết.
Eugene Nagorny

2
làm việc cho tôi quá (14.04 LTS 64-bit, chưa sửa đổi từ trên cao): sudo apt-get build-dep python-hình ảnh sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh

Tôi chỉ cần "apt-get build-dep python-hình ảnh"
peterretief

13

Tôi chỉ muốn thêm rằng, pip install pilkhông còn hoạt động nữa, ít nhất là trên máy của tôi, bạn phải làm

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


5
Hãy thử pip install Pillowthay vì pip install pill(cái sau không tồn tại)
aclark 7/215

@Lynob cái này giống với PIL? và được hỗ trợ bởi TkInker?
3kstc

@ 3kstc đúng vậy
Lynob

4

Các câu trả lời trên tạo liên kết cho các thư viện x64 ở các vị trí x86. Thay vào đó, tôi sẽ tải xuống nguồn PIL sau đó thêm các dòng này trong setup.py:

    add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
    add_directory(library_dirs, "/lib/x86_64-linux-gnu")

sau những dòng này (~ dòng 211)

    # standard locations
    add_directory(library_dirs, "/usr/local/lib")
    add_directory(include_dirs, "/usr/local/include")

    add_directory(library_dirs, "/usr/lib")
    add_directory(include_dirs, "/usr/include")

cài đặt lại PIL. Nếu bạn đang sử dụng pip:

pip uninstall PIL

Sau đó, từ thư mục nguồn chạy:

python setup.py install

2

Giải pháp này hoạt động với tôi trên Ubuntu 14.04 vì libjpeg không có sẵn trong kho lưu trữ.

Điều gì đã làm việc cho tôi

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

2

sudo apt-get install python-imagingBây giờ cài đặt Gối không PIL . Đối với selftest.py, bạn có thể cần phải kiểm tra nguồn để chạy nó. Và tất nhiên, bạn cần cài đặt các phụ thuộc nếu bạn muốn PIL hỗ trợ chúng, vd

sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

Để chạy phiên bản PIL mới hơn được bao gồm trong Ubuntu ::

pip install Pillow

2

Tôi cần cài đặt Pip trong Virtualenv vào ngày 14.04 (không sử dụng các gói hệ thống).

Để tạo gối từ PyPI bên trong virtualenv (Python 2.7):

$ sudo apt-get build-dep pillow
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install pillow

... Sau đó bạn có thể nhập PIL .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.