lcms in Python einbinden

Probleme bei der Installation?
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

Hallo, ich bin neu hier (und auch unerfahren im erweitern von Python) und wollte fragen ob ihr mir bei folgendem Problem weiterhelfen könnt:
um swatchbooker (selapa.net/swatchbooker) lauffähig zu bekommen, werden die lcms python bindings benötigt. ich habe also unter littlecms.com die "precompiled binaries" für Windows runtergeladen, daraus die lcms.py und _lcms.pyd nach "Python26/Lib/site-packages" kopiert. Ich bekomme, wenn ich die lcms.py in der Idle starten möchte die Fehlermeldung: "File "C:\Python26\lib\site-packages\lcms.py", line 8, in <module> import _lcms ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden."

Ich habe nun versucht, die auch im lcms-Binary enthaltenen dll/exe/pyd Dateien an diversen mir sinnvoll erscheinenden Orten zu verteilen (system32, %PYTHONPATH%, Python26/DLLs/), allerdings änderte dies nichts an daran, das _lcms nicht gefunden wird. Wo muss denn diese Datei hin, damit Python sie findet?

Danke für eure Hilfe,
kweenelizabeth
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hallo kweenelizabeth, willkommen im Forum,

Für welche Python-Version sind denn die Binaries? Bist du dir sicher dass sie mit Python 2.6 kompiliert worden sind?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Auf der offiziellen Seite scheint es die Python-Bindings für Windows vorkompiliert nur für Python 2.2 zu geben. :shock: http://www.littlecms.com/newutils.htm#python
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

Hi Leonidas,
womit die binaries kompiliert wurden, kann ich ihnen nicht entnehmen. Das Release meiner Binaries ist 272 Tage also 9 Monate her. Ich habe Version 1.18a heruntergeladen, die enthält neben den Python-Bindings auch einige DLLs und EXE-Dateien.
Nach dem Inhalt der lcms.py vermute ich, dass mindestens Python 2.2 benötigt wird, als "except" steht z.B. in Zeile 13 "Python < 2.2 doesn't have 'property'".
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Naja, dann wirst du es selbt kompilieren müssen, denn so wie es scheint sind die für Python 2.2 und funktionieren somit schon längst nicht mehr.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

Gut, hab ich zwar noch nie gemacht, deshalb folgende Frage: In einem anderen Post hast du auf: http://sebsauvage.net/python/mingw.html verwiesen, ich bin dieser Anleitung bis zu dem Schritt wo man die setup.py erzeugen soll gefolgt... Jetzt weiß ich aber genau was ich da alles reinschreiben soll.
Ich habe http://www.littlecms.com/lcms-1.19.zip heruntergeladen.
Das Archiv enthält verschiedene Dateien und Ordner, unter anderem einen Unterordner Python mit folgenden Dateien:

lcms.i
lcms.py
lcms_wrap.cxx
Makefile.am
Makefile.in
swig_lcms

Ich würde jetzt so was wie """
setup(name = "lcms Setup",
version = "1.19",
ext_modules = [Extension("lcms", ["lcms.i" ...

""" schreiben? Wie muss dieses Skript genau aussehen und welche Dateien gehören dazu?
Danke für eure Tips soweit.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Nein, lcms nutzt keine Distutils, da müsste man das Makefile nutzen. Führe doch mal in der Shell ``./configure --with-python`` aus und sag bescheid was dann passiert ist. Am besten du pastest die Ausgabe ins Pastebin.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

Ich kann mit dieser Anweisung leider nicht allzuviel anfangen, vielleicht könntest du das nochmal etwas ausführlicher darlegen?
Soll ich das in die Windows-Shell eingeben? Von welchem Ordner aus? Ist "configure" ein Befehl eine eigene Anwendung oder Bestandteil einer anderen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kweenelizabeth hat geschrieben:Ich kann mit dieser Anweisung leider nicht allzuviel anfangen, vielleicht könntest du das nochmal etwas ausführlicher darlegen?
Also du brauchst die Bash (AFAIR Teil von MSYS) um das Konfigurationsskript laufen zu lassen.
kweenelizabeth hat geschrieben:Soll ich das in die Windows-Shell eingeben? Von welchem Ordner aus?
Von dem Ordner in dem der restliche lcms-Kram entpackt wurde.
kweenelizabeth hat geschrieben:Ist "configure" ein Befehl eine eigene Anwendung oder Bestandteil einer anderen?
``configure`` ist Teil des ZIP-Archives, es erstellt alle Dateien die notwendig sind um lcms zu kompilieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

OK, Danke, ich habe mir Bash installiert und "./configure --with-python" ausgeführt. Ich weiß grad nicht genau was das Pastebin ist...

[Edit (Leonidas): Paste ausgelagert.]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ok, was man in Zeile 37 sieht ist, dass ``./configure`` kein Python findet - ist bei dir Python im ``%PATH%``? Wenn nicht, füge es hinzu und führe ``./configure --with-python`` nochmal aus und schau nach ob es diesmal gefunden wurde.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

OK, ich habs in die Umgebungsvariable eingehangen und neu "configured": http://paste.pocoo.org/show/165901/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kweenelizabeth hat geschrieben:OK, ich habs in die Umgebungsvariable eingehangen und neu "configured": http://paste.pocoo.org/show/165901/
Oh, das sieht schon sehr gut aus. Dann musst du mit den gleichen Umgebungsvariablen nun ``make`` ausführen, damit der lcms-Code mitsamt der Python-Erweiterung kompiliert wird. Danach solltest du vermutlich im python/-Ordner die passende lcms.pyd finden können.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

Bei ''make'' kommt es nun zu folgenden Fehlermeldungen:
http://paste.pocoo.org/show/165984/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kweenelizabeth hat geschrieben:Bei ''make'' kommt es nun zu folgenden Fehlermeldungen:
http://paste.pocoo.org/show/165984/
Das sind aber nicht alle Fehlermeldungen, oder? Das "on" oben impliziert dass da mindestens ein "cannot be used as a function"-Fehler ist. Und vermutlich auch noch eine Reihe weiterer Fehler die genau die sind, die interessieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

OK, ich bin halt noch sehr unerfahren Umgang mit den ganzen tools... Ich habe den Output von make mit > in eine Datei umgeleitet, die enthielt folgendes: http://paste.pocoo.org/show/166039/ Allerdings entspricht das ja nicht den letzten Bildschirmausgaben aus dem vorherigen Post. Wie kann ich die denn einfangen?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Code: Alles auswählen

make &> dein_dateiname
(und ja, ich vergesse die Umleitungssyntax ganz oft und muss immer nachschauen)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

gut Danke, hier also nun die vollständige Ausgabe: http://paste.pocoo.org/show/166136/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

OK, offensichtlich findet er die ``Python.h`` nicht (Zeile 109), du musst wohl den Pfad zu deiner ``Python.h`` manuell angeben:

Code: Alles auswählen

$ CPPFLAGS="-I<Pfad zur Python.h>" ./configure --with-python
make
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kweenelizabeth
User
Beiträge: 15
Registriert: Donnerstag 14. Januar 2010, 22:50

Code: Alles auswählen

CPPFLAGS="-I c:\python26\include" ./configure --with-python
make 
Ändert leider nichts am Ergebnis, die Python.h wird immer noch nicht gefunden.
Antworten