Seite 1 von 1

KeyError nur unter Windows

Verfasst: Mittwoch 26. Juli 2006, 19:50
von Whitie
Hi Leute,
ich hab hier ein Stück Code, der unter Linux wunderbar läuft und unter Windows (XP Pro) einen Fehler verursacht.

Code: Alles auswählen

D:\wws>python Config.py -D
Traceback (most recent call last):
  File "Config.py", line 387, in ?
    conf = Config(sys.argv, True)
  File "Config.py", line 27, in __init__
    self.CONFIG_PATH = os.environ['HOME'] + os.sep + '.wws'
  File "C:\Python24\lib\os.py", line 422, in __getitem__
    return self.data[key.upper()]
KeyError: 'HOME'
Hat jemand einen Rat für mich, warum das unter Windows nicht funktioniert ?

Gruß, Whitie

Verfasst: Mittwoch 26. Juli 2006, 20:36
von Leonidas
Ganz einfach, weil unter Windows die Umgebungsvariable $HOME (oder eher %HOME%) nicht gesetzt wird. Versuchs mal mit os.path.expanduser('~'), das sollte gehen.

Verfasst: Mittwoch 26. Juli 2006, 20:47
von Whitie
Danke für die Antwort.

Ich kann erst morgen wieder unter Windows testen, aber beim Aufruf von

Code: Alles auswählen

print os.environ['HOME']
vorhin im interaktiven Modus wurde der komplette Pfad bis zu meinen Eigenen Dateien ausgegeben.

Kann es trotzdem daran liegen ?

Gruß, Whitie

Verfasst: Donnerstag 27. Juli 2006, 22:18
von Leonidas
Kann sein, dass irgendwo diese Veriable definiert wird, allerdings sollte man vermeiden sie zu nutzen, das geht mit os.path.expanduser zuverlässiger, weil es nicht von irgendwelchen Umgebungsvaribalen abhängt (correct me if I'm mistaken - kanns leider auf Windows nicht testen, aber ich meine mich erinnern zu können das das so stimmt).

Verfasst: Freitag 28. Juli 2006, 08:57
von gerold
Leonidas hat geschrieben:Kann sein, dass irgendwo diese Veriable definiert wird
Hi!

Unter Windows sind diese Variablen dafür zuständig:

Code: Alles auswählen

HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\Gerold
Bekommt man mit "SET" in der "Eingabeaufforderung" raus.

Allerdings würde ich auch eher

Code: Alles auswählen

os.path.expanduser("~")
dafür verwenden. Es ist kürzer und betriebssystemunabhängiger.

lg
Gerold
:-)

Verfasst: Freitag 28. Juli 2006, 17:55
von Whitie
Danke,
bin leider nicht mehr zum Testen gekommen.
Jetzt ist erstmal WE und Windows gibts nur auf der Arbeit.

Ich werde am Montag schreiben, ob alles wie gewünscht funktioniert.

Gruß, Whitie