Seite 1 von 2

zlib import error

Verfasst: Donnerstag 22. Juli 2004, 11:45
von rayo
Hi

wenn ich zlib importieren möchte kommt folgender fehler:

Code: Alles auswählen

import zlib
ImportError: dynamic module does not define init function (initzlib)
was kann ich machen damit es funktioniert?
ich hab python 2.3 auf windows xp

gruss

Re: zlib import error

Verfasst: Donnerstag 22. Juli 2004, 12:29
von Joe
rayo hat geschrieben:

Code: Alles auswählen

import zlib
ImportError: dynamic module does not define init function (initzlib)
Da muß sich Pyhton ein falsches zlib reinpfeifen. Mit zB OpenOffice scheint es da einen Konflikt zu geben. Vielleicht hilft es schon, wenn der lib-ordner der Python-Installation, also zB "c:\python32\lib", möglichst weit vorne in der Umgebungsvariablen "pythonpath" steht.
joe

Verfasst: Donnerstag 22. Juli 2004, 12:49
von rayo
Hi

Ich hab mal sys.path.insert(0,'E:\\python23\\lib') gemacht kommt aber gleicher fehler. Eine Umgebungsvariable names pythonpath hab ich nicht.

Gruss

Python / Django - Server auf Fritz!Box

Verfasst: Sonntag 27. Juli 2008, 14:57
von Der-Noo
Ich versuche seit einiger Zeit das Django Webframework auf meiner Fritz!Box 7141 zu installieren. Letztendlich will ich meine Homepage auf der Box hosten.

Ich hab (nach zähem Ringen) in Anlehnung an diesen Thread Python cross-compiled.

Django zu installieren ging dann ganz gut, da Python ja schon (fast) alle Abhängigkeiten mitgebracht hat. Auch der lighttpd - Webserver lies sich recht leicht compilen.

Aber als ich den Django in den Webserver einbinden wollte kam ein Fehler - ihm fehle "flup".
also hab ich flup besorgt, wollts installieren und siehe da:
Er will dazu die setuptools*.egg installieren, scheitert aber an einem "missing zlib"(exact: zipimport.ZipImportError: can't decompress data; zlib not available)

Wenn ich im Python interpreter "import zlib" eingebe kommt: "ImportError: dynamic module does not define init function (initzlib)"

Auf der FritzBox gibt es eine z-lib shared library die ich installieren kann. später finde ich im system auch mehrere libz.so (libz.so.1 ...) in /lib. Kann ich mit denen was anfangen oder benutzt python da die zlib.h/zlib.so in /python/lib/lib-dynload/ ?

In verschiedenen Foren hab ich dann nur fehler gefunden die mit der PYTHONPATH-umgebungsvariable zusammenhängen, Die hab ich auf die Ordner in denen Python installiert ist, gesetzt. Brachte mir aber nix.

Kann mir jemand helfen?

Danke[/url]

Verfasst: Sonntag 27. Juli 2008, 17:14
von sma
Der-Noo hat geschrieben:ich hab python 2.3 auf windows xp
Der-Noo hat geschrieben:Ich versuche seit einiger Zeit das Django Webframework auf meiner Fritz!Box 7141 zu installieren
Deine Fritzbox läuft unter Windows XP? Will sagen, warum umgehst du (versuchsweise) das Problem unter Windows nicht durch Installation eines aktuellen Python 2.5. Damit hatte ich zusammen mit Django noch keine Probleme.

Ansonsten, man kann doch die Eggs auch auspacken. Oder direkt die .py-Dateien aus der Flup-Distribution extrahieren. Das sind für fcgi ca. 60k, würde ich schätzen. Scheint mir am einfachsten.

Stefan

Verfasst: Sonntag 27. Juli 2008, 17:55
von Der-Noo
nee. sorry. ich hab nix mit rayo zu tun. Ist ja auch 4 jahre her...

War halt der gleiche Fehler, da dacht ich ich stecks da rein.
ich arbeite mit linux:-)

Verfasst: Sonntag 27. Juli 2008, 22:31
von Der-Noo
Ah super! ich glaub es hat funktioniert!
es kam auf jeden fall keine Fehlermeldung mehr....

Da hätt ich echt selber draufkommen können, dass ich flup auch selber entpacken kann. trotzem vielen Dank!

Verfasst: Montag 28. Juli 2008, 07:26
von jens
Eine andere Möglichkeit wäre gewesen django's developer server zu nutzten. Dann braucht man kein flup. Den Server sollte man aber nicht produktiv nutzten, heißt es.

Verfasst: Montag 28. Juli 2008, 21:52
von Der-Noo
Genau deshalb.

Mit dem gedanken (an diesen Pfusch) hatte ich auch gespielt, aber der develop-server weigert sich auch in die Öffentlichkeit zu "serven" (hat bei mir nur auf localhost funktioniert)

mfg Noo

Verfasst: Montag 28. Juli 2008, 22:11
von Leonidas
Naja, man muss ihn auf 0.0.0.0 lauschen lassen. Aber, ich formuliere es nochmal: der ist nicht für die Öffentlichkeit gedacht. Ich würde so einen Server sicher nicht längere Zeit unüberwacht laufen lassen.

Verfasst: Dienstag 29. Juli 2008, 02:18
von Der-Noo
Das meine ich doch. ich hab das nicht vor.

ich habe jetzt das django-framework mit dem lighttpd "gekoppelt" (heißt das so?) und im Browser angesprochen zeigt er eine weiße Seite (statt vorher verbindungsfehler)

Wenn ich nun die Datenbankobjekte erzeugen ( mit "./manage.py syncdb" ) will bricht er ab. Der traceback sagt, dass pysqlite2 fehlt - installiere ich das nach dann fehlt _sqlite.
Aber das müsste Python doch eigentlich mitbringen, oder?

Verfasst: Dienstag 29. Juli 2008, 02:33
von Leonidas
Der-Noo hat geschrieben:Der traceback sagt, dass pysqlite2 fehlt - installiere ich das nach dann fehlt _sqlite.
Aber das müsste Python doch eigentlich mitbringen, oder?
Python 2.5 bringt es mit, aber nur wenn du es mitkompilierst. Es scheint dass du bei deiner Installation die zu kompilierenden Module nicht mitinstalliert hast, somit sind diese nicht verfügbar.

Verfasst: Dienstag 29. Juli 2008, 10:43
von Der-Noo
Ich dachte mir schon fast, dass da beim cross-compilen nicht alles so rund gelaufen ist....

Gibts eine Möglichkeit diese Module nachträglich zu kompilieren/installieren?

Verfasst: Mittwoch 30. Juli 2008, 00:47
von Leonidas
Du kannst natürlich PySQLite2 auch nachinstallieren, auch auf Python 2.5, nur muss du eben sichergehen, dass auch die Devel-Header und Libs beim Crosskompilieren verfügbar sind.

Verfasst: Mittwoch 30. Juli 2008, 09:18
von sma
Ich habe innerhalb der Firma mit auf dem development-server laufenden Anwendungen keine negativen Erfahrungen gemacht. Ging prima. Einmal hatten wir noch das Logging ein bisschen gehackt, welches ansonsten recht wenig verrät. Größter Nachteil ist eigentlich, dass das dev-server nur single-threaded ist, wenn er also auch statische Ressourcen ausliefert, trägt er keine große Last. Bei vielen Anwendungen ist das aber IMHO egal.

Eine interessante Alternative, die ich immer nochmal ausprobieren wollte, könnte cherrypy für Django sein.

Stefan

Verfasst: Samstag 20. September 2008, 10:25
von Der-Noo
also dieses sqlite-modul krieg ich einfach nicht hin.

beim compilen schimpft der immer:

Code: Alles auswählen

/home/noo/basteln/Python-2.5/Modules/_sqlite/statement.c:169: warning: dereferencing type-punned pointer will break strict-aliasing rules
/home/noo/basteln/Python-2.5/Modules/_sqlite/statement.c:198: warning: dereferencing type-punned pointer will break strict-aliasing rules
mipsel-linux-uclibc-gcc: unrecognized option '-R/usr/lib'
/home/noo/Dokumente/Programmieren/Fritz!Box/freetz-1.0/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.1/../../../../mipsel-linux-uclibc/bin/ld: skipping incompatible /usr/lib/libsqlite3.so when searching for -lsqlite3
/home/noo/Dokumente/Programmieren/Fritz!Box/freetz-1.0/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.1/../../../../mipsel-linux-uclibc/bin/ld: skipping incompatible /usr/lib/libsqlite3.a when searching for -lsqlite3
/home/noo/Dokumente/Programmieren/Fritz!Box/freetz-1.0/toolchain/build/gcc-4.2.1-uClibc-0.9.28/mipsel-linux-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.2.1/../../../../mipsel-linux-uclibc/bin/ld: cannot find -lsqlite3
collect2: ld returned 1 exit status
Vermutlich versucht er die x86 - versionen von meinem system zu nehmen...

Da muss ich sqlite zuerst in _mipsel übersetzen, und dann dem Python-Compiler sagen, er soll die nehmen, richtig?
aber wie?

Verfasst: Samstag 20. September 2008, 10:26
von Der-Noo
und weiß jemand was ich gegen die "breaking strict aliasing-rules"-warnings machen kann?

Verfasst: Samstag 20. September 2008, 10:54
von Leonidas
Der-Noo hat geschrieben:Da muss ich sqlite zuerst in _mipsel übersetzen, und dann dem Python-Compiler sagen, er soll die nehmen, richtig?
aber wie?
Richtig, zuerst sqlite3 für MIPSel kompilieren, mit dem Crosscompiler und dann dem Compiler mit -I den Pfad zu den richtigen Header und mit -L den Pfad zu den MIPSel-Libraries angeben.

Eine alternative könnte es ja auch sein, QEMU zu nehmen, damit ein MIPSel-System zu installieren und das dann zum kompilieren zu verwenden.

Verfasst: Samstag 20. September 2008, 11:28
von Der-Noo
das mit dem qemu hab ich die letzten tage versucht. sieht auch super aus. Wenn ich das dann auf der Fritzbox hab, fehlen ihm verschiedene libs (libutil.so.2, libm.so. libc.so.6). reiche ich die aus der virtuellen Maschine nach bringt er am ende:

Code: Alles auswählen

libc.so.6: aborted attempt to load ./python! 
da wusst ich dann absolut auch nicht mehr weiter...

Verfasst: Dienstag 23. September 2008, 09:09
von Der-Noo
YEAH! Danke für den Tip, das sqlite3 - Modul ist jetzt endlich dabei !

funktioniert nur (noch?) nicht :-(

Code: Alles auswählen

./python -v

>>> import sqlite3
import sqlite3 # directory /mod/usr/lib/python2.5/sqlite3
# /mod/usr/lib/python2.5/sqlite3/__init__.pyc matches /mod/usr/lib/python2.5/sqlite3/__init__.py
import sqlite3 # precompiled from /mod/usr/lib/python2.5/sqlite3/__init__.pyc
# /mod/usr/lib/python2.5/sqlite3/dbapi2.pyc matches /mod/usr/lib/python2.5/sqlite3/dbapi2.py
import sqlite3.dbapi2 # precompiled from /mod/usr/lib/python2.5/sqlite3/dbapi2.pyc
dlopen("/mod/usr/lib/python2.5/lib-dynload/datetime.so", 2);
import datetime # dynamically loaded from /mod/usr/lib/python2.5/lib-dynload/datetime.so
dlopen("/mod/usr/lib/python2.5/lib-dynload/time.so", 2);
import time # dynamically loaded from /mod/usr/lib/python2.5/lib-dynload/time.so
dlopen("/mod/usr/lib/python2.5/lib-dynload/_sqlite3.so", 2);
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mod/usr/lib/python2.5/sqlite3/__init__.py", line 24, in <module>
    from dbapi2 import *
  File "/mod/usr/lib/python2.5/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ImportError: File not found
und wenn ich's dann noch einmal versuche wird Python mit einem Speicherzugriffsfehler beendet:

Code: Alles auswählen

>>> import sqlite3
import sqlite3 # directory /mod/usr/lib/python2.5/sqlite3
# /mod/usr/lib/python2.5/sqlite3/__init__.pyc matches /mod/usr/lib/python2.5/sqlite3/__init__.py
import sqlite3 # precompiled from /mod/usr/lib/python2.5/sqlite3/__init__.pyc
# /mod/usr/lib/python2.5/sqlite3/dbapi2.pyc matches /mod/usr/lib/python2.5/sqlite3/dbapi2.py
import sqlite3.dbapi2 # precompiled from /mod/usr/lib/python2.5/sqlite3/dbapi2.pyc
dlopen("/mod/usr/lib/python2.5/lib-dynload/_sqlite3.so", 2);
Segmentation fault
/var/disk/usr/bin #
Leider kann ich damit nicht viel anfangen - beim Compilen hat er gemekert, dass Tcl/Tk fehlt...
Kann das sein dass er das auch braucht? wenn ich sqlite3 selbst ausführe gehts. Spricht Python Tcl/Tk mit sqlite3?
Das ist nämlich auch ganz schöner stress zum compilieren...