Anfängerfrage: Klasse importieren per import funzt nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
puemer
User
Beiträge: 8
Registriert: Dienstag 3. Juli 2012, 16:33

Hallo liebe Python Freunde
Ich bin gerade daran meine ersten Python Schritte zu wagen. Die ersten Schritte klappen auch ganz gut. Jetzt würde ich gerne mal eine Klasse, die in einer separaten Datei steht, importieren.

Die Datei mit der Klasse DiskSpace heisst diskspace.py und befindet sich im gleichen Ordner wie das ausführbare Python Script.

Mittels
from diskspace import DiskSpace
importiere ich also die Klasse. So und jetzt zu meinem Problem: Auf einem Rechner funktioniert das perfekt, auf einem anderen bekomme ich die Fehlermeldung:

Traceback (most recent call last):
File "./check_disk_space.py", line 25, in ?
from diskspace import DiskSpace
File "../diskspace.py", line 15
class DiskSpace():

was offensichtlich heisst, dass er die Klasse nicht importieren kann.

Nach langem Suchen bin ich auf die Variable PYTHONPATH gestossen. MMn sollte es in meinem Fall diese Variable doch gar nicht brauchen, da beide Files sich im selben Verzeichnis befinden. Zudem findet der Interpreter das File ja, das sieht man in der Fehlermeldung. Ich habe trotzdem versucht PYTHONPATH zu setzen, leider ohne Erfolg.

Hat jemand von Euch vielleicht einen Hinweis für mich? Warum kann der eine Rechner (Ubuntu, Python 2.6) damit umgehen und der andere (SuSE Python 2.4) nicht?

Besten Dank für Euren Feedback schon im Voraus!

Puemer
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

Mit deiner Einschätzung von "offensichtlich" liegst du ein wenig daneben. Das Modul wird durchaus gefunden und importiert, beim Ausführen des Codes im importierten Modul tritt allerdings ein Fehler auf. Wie sieht denn die letzte Zeile deiner Fehlermeldung aus? Die hast du nämlich nicht kopiert und könnte durchaus hilfreiche Informationen über die Art des Fehlers liefern ;-)

Sebastian

Edit: Um wenigstens mal zu raten: Fuktionierts, wenn du das leere Klammerpaar hinter DiskSpace weglässt?
Das Leben ist wie ein Tennisball.
puemer
User
Beiträge: 8
Registriert: Dienstag 3. Juli 2012, 16:33

Hallo EyDu
Um es vorwegzusagen: Du hast voll ins Schwarze getroffen! Ich musste bloss die Klammern der Klasse weglassen und danach hat es funktioniert. Die Klasse DiskSpace habe ich übrigens bei

http://blog.projectfondue.com/2010/1/21 ... disk-space

gefunden.

Warum die Klasse mit Klammer bei einem Rechnersystem funktioniert und beim anderen nicht (unterschiedliche Python Version), weiss ich nicht. Vielleicht hast Du eine Erklärung.

So jetzt möchte ich mich aber für die nette Begrüssung in diesem Forum bedanken und der prompten Lösung meines Problems!

Ich hatte schon Bammel, als ich nach meiner Anfrage den Beitrag "Offener Brief an Pythonneulinge" las. Natürlich hätte ich mich Stunden oder Tage durch die Python Doku quälen können. Auf diese Weise bin ich aber viel schneller zur Lösung gekommen, ohne dass Du hoffentlich zu viel Zeit hast investieren müssen, um einem Newbie unter die Arme zu greifen. Trotzdem verstehe ich die Anliegen des Verfassers dieses Beitrages. Es kann nicht sein, dass z.B. einem in diesem Forum die komplette Programierarbeteit abgenommen wird. Dafür ist diese Forum sicher nicht gedacht.

Nochmals besten Dank für Deine Hilfe!

Gruss
Puemer
BlackJack

@puemer: Statt die Klammern weg zu lassen solltest Du lieber explizit von `object` erben. Zumindest in Python 2.x bekommt man nur so „new style”-Klassen bei denen auch alles so funktioniert wie es dokumentiert ist.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hilfreich ist es auch auf eine nachsintflutliche Python-Version zu updaten, diese verstehen unter anderem auch die leeren Klammern.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
puemer
User
Beiträge: 8
Registriert: Dienstag 3. Juli 2012, 16:33

Danke BlackJack, der Tipp mit 'Object' in den Klammern hat geholfen.

@Leonidas, die Python Version auf diesem Recher zu updaten ist etwas schwierig. Es ist eine Software Appliance, die ich nicht unbedingt gross verändern möchte.

Nochmals Danke an alle Eure wertvollen Tipps! Python macht langsam tatsächlich Spass http://www.python-forum.de/posting.php? ... =1&t=29588#
Antworten