KeyError nur unter Windows

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
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ganz einfach, weil unter Windows die Umgebungsvariable $HOME (oder eher %HOME%) nicht gesetzt wird. Versuchs mal mit os.path.expanduser('~'), das sollte gehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

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
Antworten