Problem PIL installieren

Django, Flask, Bottle, WSGI, CGI…
Antworten
db
User
Beiträge: 2
Registriert: Dienstag 3. Juni 2008, 21:15

Hallo Leute!

Ich versuche verzweifelt PIL auf einem root Server AMD 64bit System zu installieren.

Folgendes habe ich durchgeführt:

Code: Alles auswählen

/opt/python2.4.4/bin/python setup.py build_ext -i
Ergebnis war ok:
PIL 1.1.6 BUILD SUMMARY
--------------------------------------------------------------------
version 1.1.6
platform linux2 2.4.4 (#1, May 7 2008, 23:10:44)
[GCC 4.1.2 20061115 (prerelease) (SUSE Linux)]
--------------------------------------------------------------------
--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--------------------------------------------------------------------
To check the build, run the selftest.py script.


Anschließend habe ich

Code: Alles auswählen

/opt/python2.4.4/bin/python2.4 selftest.py
laufen lassen, wobei ich folgende Fehlermeldung erhalten habe:

Failure in example: _info(Image.open("Images/lena.jpg"))
from line #24 of selftest.testimage
Exception raised:
Traceback (most recent call last):
File "./doctest.py", line 499, in _run_examples_inner
exec compile(source, "<string>", "single") in globs
File "<string>", line 1, in ?
File "./selftest.py", line 22, in _info
im.load()
File "PIL/ImageFile.py", line 180, in load
d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "PIL/Image.py", line 375, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
1 items had failures:
1 of 57 in selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.

Ich bin schon völlig am verzweifeln!
libjpeg ist installiert.

Kann mir da jemand weiter helfen?????

Danke Euch im Vorraus!
db
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

db hat geschrieben:--------------------------------------------------------------------
--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
--------------------------------------------------------------------
Hallo db!

Willkommen im Python-Forum!

Auch wenn die Tests nicht durchlaufen, besteht trotzdem die Chance, dass PIL einwandfrei funktioniert. Ich würde es einfach mal ausprobieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
db
User
Beiträge: 2
Registriert: Dienstag 3. Juni 2008, 21:15

Hallo Gerold!

Es scheint leider nicht zu funktionieren.
Ich habe auf dem root server zope 2.10.5 und plone 3 laufen

Wenn ich in einer Seite in Plone ein Image einfüge so wird das nicht dargestellt.
Meine Vermutung war daher dass PIL wegen den Fehlern nicht ordentlich läuft und daher die Bilder nicht angezeigt werden.

Hast Du / Jemand eine Idee?

Danke und Gruß
db
togis
User
Beiträge: 4
Registriert: Donnerstag 12. Juni 2008, 09:02
Wohnort: Ulm, Germany
Kontaktdaten:

Hallo db,

ich stehe vor dem gleichen Problem. Ich habe auf einem 64bit SUSE 10.2 root-Server auf dem python 2.5 vorinstalliert war, python 2.4.5 für Zope 2.10.6 daneben installiert. Funktioniert soweit alles.
Beim Versuch PIL zu installieren bekomme ich am Ende das selbe Fehlerbild.

Es wird mir zunächst angezeigt dass der JPEG Support OK ist, beim selftest.py dann aber "decoder jpeg not available".
Versuche ich in ZOPE dann die PIL zu benutzen (in meinem Fall PhotoFolder) bekomme ich auch diese Fehlermeldung.

Die jpeg lib und zlib habe ich allerdinsg mit yast installiert. Das sollte nach meiner Auffassung aber egal sein. Die PIL muss eben die Pfade finden und das tut sie offensichlich nicht.

In der PIL setup.py soll man laut README und diversen Quelle im WWW (z.B. http://effbot.org/zone/pil-decoder-jpeg ... ilable.htm) die Pfade angeben. Nur was genau ich angeben soll ist recht unklar.

Da steht z.B.

Code: Alles auswählen

JPEG_ROOT = "/home/libraries/jpeg-6b"
Ich habe aber weder einen Folder noch eine Datei mit dem Namen jpeg-6b. Laut yast ist das aber installiert. Die Dateien dafür heißen aber cjpeg und djpeg.

Ich habe dann folgendes eingetragen:

Code: Alles auswählen

JPEG_ROOT = "/usr/lib64", "/usr/include"

Dann gibt es eine Anweisung die ebenfalls keinen Sinn macht da die Folder nicht existieren:

Code: Alles auswählen

def libinclude(root):
    # map root to (root/lib, root/include)
    return os.path.join(root, "lib"), os.path.join(root, "include")
hab es dann mal so geändert:

Code: Alles auswählen

def libinclude(usr):
    # map root to (root/lib, root/include)
    return os.path.join(usr, "lib64"), os.path.join(usr, "include")

Ich habe jetzt so ziemhlich alles durch probiert, komme aber immer zum selben Ergebnis. Es ist als wäre die JPEG lib gar nicht installiert.

Eine Möglichkeit die ich in Betracht gezogen habe wäre die JPEG lib selbst zu kompilieren - aber da DB das gemacht hat liegt es wohl nicht daran.

Jede Form der Hilfe oder Hinweise sind willkommen,
viele Grüße
Tobias
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Die Frage ist natürlich auch, ob du die entsprechenden -devel Pakete mitinstalliert hast.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
togis
User
Beiträge: 4
Registriert: Donnerstag 12. Juni 2008, 09:02
Wohnort: Ulm, Germany
Kontaktdaten:

Hallo Leonidas,

das frage ich mich auch - in yast scheinen das 2 verschiedene libs zu sein:

1) jpeg (version 6b)
2) libjpeg

für 2) gibt es auch die entsprechenden devel dateien (libjpeg-devel), die habe ich auch installiert. Aber für jpeg gibt es keine devels. Das schein aber die lib zu sein die PIL haben will. Zumindest wird in der README immer auf die hingewiesen.

Wie bekomme ich also die devels zu der mit yast installierten jpeg dazu? Geht das überhaupt?

Viele Grüße
Tobias
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

togis hat geschrieben:1) jpeg (version 6b)
2) libjpeg

für 2) gibt es auch die entsprechenden devel dateien (libjpeg-devel), die habe ich auch installiert. Aber für jpeg gibt es keine devels. Das schein aber die lib zu sein die PIL haben will. Zumindest wird in der README immer auf die hingewiesen.

Wie bekomme ich also die devels zu der mit yast installierten jpeg dazu? Geht das überhaupt?
1) ist mal gar keine Lib, weil sie nur normale Binaries enthält, siehe hier. Die müssten übrigens gegen libjpeg gelinkt sein, und darauf ein Dependency haben.
Was du brauchst sind die -devel Pakete der libjpeg, möglicherweise ist das für 64-Bit libjpeg-devel-64bit.

Wie du das installierst, entnimmst du bitte dem Manual deiner Linux-Distribution. Das Online-Paketverzeichnis von openSUSE ist ja eine richtige Zumutung.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
togis
User
Beiträge: 4
Registriert: Donnerstag 12. Juni 2008, 09:02
Wohnort: Ulm, Germany
Kontaktdaten:

yep - ist alles installiert - als 64bit version.

Ich bin nicht so tief in reiner Linux Administration drin, was meinst Du mit
Die müssten übrigens gegen libjpeg gelinkt sein, und darauf ein Dependency haben
Also kurz - wie mache ich das bzw. wie sehe ich ob das gemacht ist? Kann ruhig grob sein - ich lese mich dann schon ein.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Andererseits: wo ist eigentlich das Problem, einfach ``python-imaging`` zu installieren?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
togis
User
Beiträge: 4
Registriert: Donnerstag 12. Juni 2008, 09:02
Wohnort: Ulm, Germany
Kontaktdaten:

Ich kann python-imaging nicht über yast installieren weil dort python 2.5 vorinstalliert ist. Deswegen habe ich python 2.4.5 selber kompiliert.
Eine Überlegung war auch schon das aus yast zu desinstallieren und dann python 2.4.5 über yast zu installieren. Dann kann ich den Rest auch so installieren und die ganzen Abhängkeiten wären drin - vielleicht.
Dann kann ich aber von vorne anfangen und verstanden hab ich es dann trotzdem nicht.

Aber eigentlich müsste dass auch so gehen wie ich es jetzt gemacht habe. Ich verstehe nur nicht wie ich der PIL sagen kann wo dieses jpeg Zeug liegt.
Antworten