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

KeyError nur unter Windows

Beitragvon Whitie » Mittwoch 26. Juli 2006, 19:50

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 26. Juli 2006, 20:36

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

Beitragvon Whitie » Mittwoch 26. Juli 2006, 20:47

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 27. Juli 2006, 22:18

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 Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 28. Juli 2006, 08:57

Leonidas hat geschrieben:Kann sein, dass irgendwo diese Veriable definiert wird

Hi!

Unter Windows sind diese Variablen dafür zuständig:
[code=]HOMEDRIVE=C:
HOMEPATH=\Dokumente und Einstellungen\Gerold[/code]
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: 111
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Beitragvon Whitie » Freitag 28. Juli 2006, 17:55

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

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]