Bagaimana cara menginstal python imaging library (PIL)?

35

Bagaimana cara menginstal python imaging library (PIL) di Ubuntu?

Saya mencoba melakukannya

sudo apt-get install python-imaging

tetapi sekarang ketika saya menjalankan python selftest.py (skrip yang saya dapatkan dari suatu tempat di situs http://pythonware.com/products/pil/ ) saya dapatkan (di antara pesan peringatan lainnya):

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

Sudahkah saya mengacaukan PIL - bagaimana cara memperbaikinya?

Apakah PIL mungkin baik-baik saja, tetapi "selftest.py" itu bukan program yang tepat untuk memeriksa apakah PIL diinstal dengan benar - bagaimana lagi saya bisa tahu apakah PIL diinstal dengan benar atau tidak?

(Saya menggunakan Ubuntu 12,04 LTS "Precise Pangolin").

(Apa yang saya akhirnya coba lakukan adalah menambahkan generator barcode 2D ke beberapa kode python, dan semua generator barcode 2D yang saya temukan yang ditulis dengan python sepertinya menggunakan PIL).

David Cary
sumber
2
Anda mungkin ingin mencoba menggunakan PIL dalam suatu aplikasi, mungkin saja ada masalah dengan selftest.py
Aaron Hill
1
Di 18.04 sepertinya Anda baru saja melakukan sudo apt-get install python-pilatau sudo apt-get install python3-pil.
Shule
^ Jelas, sudo apt-get install python-pilhanya bekerja untuk saya di raspbian.
alecxe

Jawaban:

25

Hal serupa terjadi pada saya, saya memecahkannya dengan cara ini

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

Dan coba instal lewat sana pip install PIL.

Lebih lanjut tentang apa pipyang dapat ditemukan di sini . Singkatnya adalah cara yang nyaman (dan menjadi standar) untuk menginstal perpustakaan python.

jika terus gagal, bisa jadi karena PIL mencari pustaka tersebut di jalur yang berbeda.

Ternyata instalasi APT menempatkan perpustakaan di bawah / usr / lib / x86_64-linux-gnu dan PIL akan mencari mereka di / usr / lib / . Jadi, Anda harus membuat symlink untuk PIL untuk melihatnya.

Cobalah untuk melihat apakah libjpeg dan libz lib ada di / usr / lib / x86_64-linux-gnu dan buat symlink dengan cara ini

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/

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

Hernantz
sumber
Ini tidak berfungsi untuk saya di Ubuntu 12.04 64bit.
Gus E
1
jika sesuai dengan kebutuhan Anda, Anda bisa mencoba 'bantal'. Ini adalah setetes pengganti PIL.
Hernantz
7
Kapan pun memungkinkan, gunakan pillow. Ini pada dasarnya PIL tetapi sebenarnya dipertahankan.
Thane Brimhall
Paket zlib1g-dev tidak tersedia, tetapi disebut oleh paket lain. Ini mungkin berarti bahwa paket tersebut hilang, telah usang, atau hanya tersedia dari sumber lain E: Tidak dapat menemukan paket libjpeg E: Tidak dapat menemukan paket libjpeg-dev E: Tidak dapat menemukan paket libfreetype6-dev E: Package 'zlib1g -dev 'tidak memiliki kandidat instalasi
Aalok
Paket python-imaging di Ubuntu 12.04 LTS terhubung ke perpustakaan JPEG, dan changelog menyebutkan melanggar multiarch sebelum Juli 2011. Mungkin ini selftest.pytelah rusak karena itu juga, tapi itu tidak selalu mempengaruhi hal lain.
Josip Rodin
30

Solusi di atas tidak bekerja untuk saya di Ubuntu 12.10 karena libjpeg tidak tersedia di repositori.

Apa yang akhirnya berhasil bagi saya adalah:

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

Jika Anda mendapatkan kesalahan "Anda harus meletakkan beberapa 'sumber' URI di sources.list Anda" maka pastikan bahwa /etc/apt/sources.list Anda memiliki entri deb-src yang cocok dengan entri deb Anda.

Kemudian Anda harus menghubungkan file-file dari lokasi mereka yang sebenarnya di server Anda ke lokasi di mana PIL mengharapkannya.

Versi 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

Versi 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

Akhirnya, pip install PIL

Keberhasilan!

masukkan deskripsi gambar di sini


Perbarui Sep 2014

Bantal adalah garpu PIL yang lebih modern.

#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
Nick Woodham
sumber
1
Bekerja untuk saya pada 13,04 dengan Bantal, tanpa menghubungkan.
Eugene Nagorny
2
bekerja untuk saya juga (14,04 LTS 64-bit, tidak dimodifikasi dari atas): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh
Saya hanya perlu "apt-get build-dep python-imaging"
peterretief
13

Saya hanya ingin menambahkan, itu pip install piltidak lagi berfungsi, setidaknya di komputer saya, Anda harus melakukannya

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

Lynob
sumber
5
Coba pip install Pillowalih-alih pip install pill(yang terakhir tidak ada)
aclark
@Lynob ini sama dengan PIL? dan didukung oleh TkInker?
3kstc
@ 3kstc ya itu
Lynob
4

Jawaban di atas membuat tautan untuk pustaka x64 di lokasi x86. Sebagai gantinya saya akan mengunduh sumber PIL kemudian menambahkan baris ini di setup.py:

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

setelah baris ini (~ baris 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")

instal ulang PIL. Jika Anda menggunakan pip:

pip uninstall PIL

Kemudian dari direktori sumber jalankan:

python setup.py install
Salami
sumber
2

Solusi ini berfungsi untuk saya di Ubuntu 14.04 karena libjpeg tidak tersedia di repositori.

Apa yang akhirnya berhasil untuk saya

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
sagar soni
sumber
2

sudo apt-get install python-imagingsekarang instal Bantal bukan PIL . Adapun selftest.py, Anda mungkin perlu memeriksa sumber untuk menjalankannya. Dan tentu saja, Anda perlu menginstal dependensi jika Anda ingin PIL mendukungnya, mis

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

Untuk menjalankan versi PIL yang lebih baru daripada yang termasuk dalam Ubuntu ::

pip install Pillow
aclark
sumber
2

Saya perlu memasang instalasi Pillow di virtualenv pada 14.04 (tidak menggunakan paket sistem).

Untuk membuat bantal dari PyPI di dalam virtualenv (Python 2.7):

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

... maka Anda dapat mengimpor PIL .

Corey Goldberg
sumber