Seite 1 von 1

Modul SqlAlchemy Problem

Verfasst: Dienstag 31. März 2009, 14:58
von frabron
Hallo Forum,

ich schaue mir seit einigen Tagen Python an. Bisher habe ich "nur" in PHP programmiert und suche nach Alternativen, die sich nicht nur auf das Web beschränken. Da ich relativ viel mit Datenbanken arbeite ist so ein ORM wie SqlAlchemy natürlich sehr hilfreich.

Leider habe ich Probleme mit der Verwendung des Moduls. Ich benutze Ubuntu 8.04 als Betriebssystem. Python ist aus den Quellen, Version 2.5.2.

SqlAlchemy habe ich mittels easy_install installiert, was auch fehlerfrei funktioniert hat, zumindest kamen keine Meldungen diesbezüglich auf der Konsole.

Zum Testen wollte ich das Tutorial durchgehen. Ich benutze die Netbeans IDE zum Entwickeln, doch bekomme ich beim Ausführen des Testcodes

Code: Alles auswählen

#!/usr/bin/python
import sqlalchemy
print sqlalchemy.__version__
den Fehler
Traceback (most recent call last):
File "sqlalchemy.py", line 2, in <module>
import sqlalchemy
File "/home/brfr/Documents/python/sqlalchemy_tut/sqlalchemy.py", line 3, in <module>
print sqlalchemy.__version__
AttributeError: 'module' object has no attribute '__version__'
Führe ich den Code in der interaktiven Shell aus, bekomme ich wie erwartet eine Versionsnummer. Auch
python sqlalchemy.py
wirft den selben Fehler aus. Sys.path zeigt auf auf der interaktiven Konsole und in der IDE den selben Pfad, da ist auch SqlAlchemy drin.

Leider weiss ich jetzt nicht mehr weiter, deshalb wäre ich froh, wenn mir jemand dieses Verhalten erklären könnte. Ich habe mich auch schon wieder ab- und angemeldet, da ich den Verdacht hatte, das irgendein Pfad auf der Konsole nicht stimmt. aber das hat auch nix gebracht.

Verfasst: Dienstag 31. März 2009, 15:03
von lunar
Ein üblicher Fehler ... das aktuelle Verzeichnis liegt bei Python immer an erster Stelle in der Liste der Verzeichnisse, die nach Modulen durchsucht wird (aka sys.path). Daher wird bei "import sqlalchemy" nicht das installierte sqlalchemy-Paket importiert, sondern dein Skript, dass natürlich kein __version__-Attribut hat.

Über Sinn und Unsinn dieses Features kann man sicherlich streiten, aber Python verhält sich halt so, also halte dich an die einfache Regel: Benenne Skripte nie nach installierten Paketen oder Modulen.

Verfasst: Dienstag 31. März 2009, 15:11
von frabron
Ah, da hat sich das Skript also selber importiert! Das lässt sich ja zum Glück einfach regeln. Dann kann es ja jetzt weitergehen. Vielen Dank!