Fehler beim import von SimpleXMLRPCServer

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
DrFaust
User
Beiträge: 21
Registriert: Freitag 15. Oktober 2010, 23:10

Hallo allerseits!

Ich habe Probleme beim import vom SimpleXMLRPCServer. Wenn ich folgendes einfache Skript (in meinem home) ausführe passiert erst einmal erwartungsgemäß gar nichts:

Code: Alles auswählen

from SimpleXMLRPCServer import SimpleXMLRPCServer as Server
Nun habe ich ein Projekt erstellt (mittels PyDev in eclipse) in dem ich den RPCServer bräuchte. In dem Projekt-Ordner selber funktioniert oben genannter import auch noch. Dann kommt ein src Ordner. Auch hier geht der import noch. Dann kommt mein erster Ordner der quasi ein python-package darstellt also eine (leere) __init__.py enthält (erstellt mittels PyDev). Hier und in allen darunter liegenden Ordnern tritt folgender Fehler auf:

Code: Alles auswählen

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/SimpleXMLRPCServer.py", line 102, in <module>
    import xmlrpclib
  File "/usr/local/lib/python2.7/xmlrpclib.py", line 146, in <module>
    import gzip
  File "/usr/local/lib/python2.7/gzip.py", line 36, in <module>
    class GzipFile(io.BufferedIOBase):
AttributeError: 'module' object has no attribute 'BufferedIOBase'
Ich habe leider keine Ahnung wie ich diesen Fehler finden soll. Ich habe ja noch nicht einmal eine Ahnung wie es zu dem Unterschied im Verhalten kommen kann. Ich habe mittels

Code: Alles auswählen

import platform
platform.python_version()
Sichergestellt, dass ich auch tatsächlich die selbe Python Version innerhalb und außerhalb der Package-Ordner verwende und auch der pythonpath ist derselbe. Das Verhalten ist beim Starten mit eclipse und beim starten aus der Konsole, das selbe, so dass ich auch eclipse als Fehlerquelle ausschließen würde. Mir sind die Ideen ausgegangen. Ich hoffe euch nicht?!?

Ciao

DrFaust

Ergänzung: Der selbe Effekt tritt übrigens auf, wenn ich in der interaktiven Session dem import probiere. Starte ich die Session außerhalb der package-Ordner, geht der import. Starte ich die Session mit einem der package-Ordner als working-dir, kommt der oben genannte Fehler.

Update: Ich habe gerade mal test halber ein neues Projekt erstellt, darin einen package-Ordner und darin das kurze Skript von oben platziert. Es Klappt. Ich kann es ohne Fehler ausführen. Folglich habe ich wohl irgendwas in dem ursprünglichen Projekt kaputt gemacht. Wie allerdings PyDev-Projekt-Einstellungen oder auch das vorhanden sein von packages (wie gesagt die __init__.py sind leer) Auswirkungen auf die interaktive Session haben kann, bleibt mir schleierhaft.
deets

Du hast irgendwo eine Datei namens io.py, welche das echte io-Modul verschattet.

Versuch mal folgendes:

Code: Alles auswählen

>>> import io
>>> io.__path__
einmal mit deinem funktionierenden Import, einmal ohne.
Benutzeravatar
DrFaust
User
Beiträge: 21
Registriert: Freitag 15. Oktober 2010, 23:10

Richtiger Gedanke. Ich habe ein package mit diesem Namen. Nachdem ich das umbenannt habe läuft es wieder. Danke!
Antworten