2013-03-06 15 views
10

Próbuję uzyskać heatmap.py próbki od: http://jjguy.com/heatmap/"IOError: dekoder zip niedostępne": Ubuntu Python PIL

#image.py 
import heatmap 
import random 

if __name__ == "__main__":  
    pts = [] 
    for x in range(400): 
     pts.append((random.random(), random.random())) 

    print "Processing %d points..." % len(pts) 

    hm = heatmap.Heatmap() 
    img = hm.heatmap(pts) 
    img.save("classic.png") 

i otrzymuję ten błąd:

Processing 400 points... 
Traceback (most recent call last): 
    File "/home/ec2usr/workspace/image/image.py", line 14, in <module> 
    img.save("classic.png") 
    File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 1437, in save 
    save_handler(self, fp, filename) 
    File "/usr/local/lib/python2.7/dist-packages/PIL/PngImagePlugin.py", line 572, in _save 
    ImageFile._save(im, _idat(fp, chunk), [("zip", (0,0)+im.size, 0, rawmode)]) 
    File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFile.py", line 481, in _save 
    e = Image._getencoder(im.mode, e, a, im.encoderconfig) 
    File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 399, in _getencoder 
    raise IOError("encoder %s not available" % encoder_name) 
IOError: encoder zip not available 

Praca z Eclipse na systemie Ubuntu 12 (64-bitowym) z Pythonem 2.7.

Znajduję libz.so w obu/usr/lib i/usr/lib/x86_64-linux-gnu/dobrze. Próbowałem te rozwiązania już bez rezultatu:

PIL says it has "support available" but still gives IOError when saving files

About the PIL Error -- IOError: decoder zip not available

IOError: "decoder zip not available" using matplotlib PNG in ReportLab on Linux, works on Windows

http://www.foxhop.net/ubuntu-python-easy_install-pil-does-not-install-zlib-support

byłem wyciągając włosy się nad tym przez kilka dni i znacznie doceń niczyjej pomocy!

dziennik instalacji z python-obrazowania:

[email protected]:/usr/lib$ sudo apt-get install python-imaging 
Reading package lists... Done 
Building dependency tree 
Reading state information... Done 
The following packages were automatically installed and are no longer required: 
    account-plugin-identica account-plugin-twitter gir1.2-messagingmenu-1.0 
    hplip-data libgtkspell-3-0 libqt4-designer libqt4-help libqt4-scripttools 
    libqt4-svg libqt4-test libqtassistantclient4 libsane-hpaio 
    linux-headers-3.5.0-21 linux-headers-3.5.0-21-generic python-debtagshw 
    python-lxml python-pexpect python-piston-mini-client python-qt4 
    python-renderpm python-reportlab python-reportlab-accel python-sip 
    software-center-aptdaemon-plugins ubuntu-extras-keyring 
Use 'apt-get autoremove' to remove them. 
Suggested packages: 
    python-imaging-doc python-imaging-dbg 
The following NEW packages will be installed: 
    python-imaging 
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 
Need to get 0 B/294 kB of archives. 
After this operation, 996 kB of additional disk space will be used. 
Selecting previously unselected package python-imaging. 
(Reading database ... 189302 files and directories currently installed.) 
Unpacking python-imaging (from .../python-imaging_1.1.7-4build1_amd64.deb) ... 
Setting up python-imaging (1.1.7-4build1) ... 
[email protected]:/usr/lib$ 

log z instalacji zainstalować (Python setup.py z Imaging):

PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.3 (default, Sep 26 2012, 21:51:14) 
       [GCC 4.7.2] 
-------------------------------------------------------------------- 
--- TKINTER support available 
*** JPEG support not available 
--- ZLIB (PNG/ZIP) support available 
*** FREETYPE2 support not available 
*** LITTLECMS support not available 

selftest.py:

-------------------------------------------------------------------- 
PIL 1.1.7 TEST SUMMARY 
-------------------------------------------------------------------- 
Python modules loaded from ./PIL 
Binary modules loaded from /usr/local/lib/python2.7/dist-packages 
-------------------------------------------------------------------- 
*** PIL CORE support not installed 
*** TKINTER support not installed 
--- JPEG support ok 
--- ZLIB (PNG/ZIP) support ok 
*** FREETYPE2 support not installed 
*** LITTLECMS support not installed 
-------------------------------------------------------------------- 
+0

Czy masz 'libz.so' tam po zainstalowaniu PIL? – wRAR

+0

Wierzę, że tak, ale ja również ponownie napisałem jajko PIL z sudo apt-get build-dep python-obrazowanie później, na wszelki wypadek. Aktualizacja – cmacdona101

+0

: .tif działa poprawnie; PNG i JPG nie działają. – cmacdona101

Odpowiedz

9

I Właśnie napotkałem podobny problem spowodowany przez posiadanie zarówno PIL (zainstalowany przez python instalator pip) i python-ima Pakiet ging zainstalowany przez apt-get. Kiedy usunąłem dodatkową wersję z pip, która rozwiązała dla mnie.

Jeśli zainstalowałeś PIL ze źródła lub używając pip, możesz mieć ten sam problem.

Kiedy budowałem PIL, odkryłem również, że musiałem połączyć biblioteki z/usr/lib. To może rozwiązać nieobsługiwane wiadomości w powyższym logu.

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 
7

Pamiętam, że znalazłem dokładnie to samo rozwiązanie, jakie zrobił Kris podczas instalowania PIL w systemach 64-bitowych.

Jednak obecnie zaleca się stosowanie poduszki zamiast poduszki powietrznej (PIL). Poduszka to po prostu widelec PIL z częstszymi wydaniami i mniejszymi problemami, takimi jak ten, którego doświadczasz.

Jeśli jesteś na Ubuntu myślę, że trzeba zlib1g-dev i libjpeg-dev zainstalowany przed zainstalowaniu PIL/Poduszka, aby uzyskać wsparcie dla plików JPEG/PNG zbudowany.

+0

Tutaj, aby potwierdzić, że musisz zainstalować zależności przed instalacją PIL/Pillow, tak proces instalacji wykonuje odpowiednie kroki kompilacji. –

+0

To była poprawna odpowiedź dla mnie i działa na Ubuntu 12.04 i 14.04 zarówno z python 2.7 i 3.4 – ThatAintWorking

1

Nawet moja była PIL na bieżąco rozwiązałem to w Ubuntu 12.04 z:

pip uninstall PIL 
pip install PIL 
2

To działało idealnie dla mnie:

apt-get install libjpeg62 libjpeg62-dev zlib1g-dev libfreetype6 libfreetype6-dev 

W x86_64:

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

W i386:

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


pip install -U PIL --allow-external PIL --allow-unverified PIL 
pip install -I pillow