2011-10-04 23 views
25

Używam Ubuntu i VitualEnv dla mojego projektu Django.instalacja pip PIL -E TICKETS-1 - brak obsługi JPEG/PNG

Mam zainstalowaną bibliotekę PIL przy użyciu Menedżera pakietów Synaptic i działa dobrze. Ale gdy tworzę VitrualEnv i spróbuj zainstalować PIL przy użyciu pip to installes ale mam to dziwne zachowanie:

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
       [GCC 4.5.2] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
*** JPEG support not available 
*** ZLIB (PNG/ZIP) support not available 
*** FREETYPE2 support not available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

miałem nadzieję, że mogę używać requirements.txt dla wszystkich moich uzależnień, ale może być PIL musiał być jakoś ręcznie zainstalowany ... ale jak?

Edit: Dziękuję John Keyes, masz rację, biegnę:

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/ 
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/ 

i po kolejnym spróbować PIL zainstalować uzyskać:

-------------------------------------------------------------------- 
PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53) 
       [GCC 4.5.2] 
-------------------------------------------------------------------- 
*** TKINTER support not available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
- ------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

Edit: Może być konieczne zainstalować libfreetype6-dev libjpeg8-dev

Edytuj: Inną dobrą opcją jest użycie Pillow zamiast PIL

Odpowiedz

4

Rozwiązaniem, które wydaje się działać dla nas (tak jak w PIL 1.7.7) jest odinstalowanie najpierw PIL, a następnie Pillow, a następnie pip install pillow - upgrade. Oczywiście musisz zainstalować libjpeg8-dev.

+2

Dzięki, próbowałem wielu rzeczy, ale to był jedyny, który naprawił to! – deweydb

+0

uważam, że może to być przydatne: http://pythonadventures.wordpress.com/2013/05/19/problems-with-pil-use-pillow-instead/ – user2290820

+0

Używanie Pillow jest rozwiązaniem goole. – x4snowman

5

i tylko w przypadku, jeśli używasz virtualenv, nie trzeba trzeba utworzyć dowiązania systemowych, tutaj jest uniwersalnym obejście, które działa na każdej architekturze:

ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libz.so $VIRTUAL_ENV/lib/ 
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libfreetype.so $VIRTUAL_ENV/lib/ 
ln -s /usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/libjpeg.so $VIRTUAL_ENV/lib/ 

i trzeba aby wykonać te linie wewnątrz wirtualnej aktywowanej sesji powłoki, zostaną utworzone dowiązania symboliczne wewnątrz katalogu virtualenv lib.

Komenda dpkg-architecture -qDEB_HOST_MULTIARCH służy do wykrywania głównego katalogu bibliotek systemowych (uname -i nie jest niezawodny). Zmienna środowiskowa $VIRTUAL_ENV jest ustawiana za pomocą skryptu virtualenv activate.

Powiązane problemy