2009-07-11 3 views
3

Ich habe ein kleines Python-Programm, das einen geheimen Schlüssel Google Maps API verwendet. Ich mache mich bereit, um meinen Code einzuchecken, und ich möchte den geheimen Schlüssel nicht in SVN aufnehmen.Wo Geheimschlüssel und Passwort in Python gespeichert werden

In der kanonischen PHP-App legen Sie in LocalSettings.php geheime Schlüssel, Datenbankpasswörter und andere appspezifische Einstellungen ab. Gibt es eine ähnliche Datei/einen ähnlichen Speicherort, den Python-Programmierer erwarten und ändern?

+0

Dank Vinay. Ich habe es mit execfile arbeiten (os.path.join (os.environ ['HOME'], '.appname')). Danke S.Lott für die ExecFile-Methode. – brianegge

Antwort

3

Nein, es gibt keinen Standardstandort - unter Windows ist es normalerweise im Verzeichnis os.path.join(os.environ['APPDATA'], 'appname') und unter Unix ist es normalerweise os.path.join(os.environ['HOME'], '.appname').

3

Ein Benutzer muss seinen eigenen geheimen Schlüssel konfigurieren. Eine Konfigurationsdatei ist der perfekte Ort, um diese Informationen zu speichern.

Sie haben mehrere Auswahlmöglichkeiten für Konfigurationsdateien.

  1. Verwenden Sie ConfigParser, um eine Konfigurationsdatei zu analysieren.

  2. Verwenden Sie ein einfaches Python-Modul als Konfigurationsdatei. Sie können einfach execfile laden, um Werte aus dieser Datei zu laden.

  3. Erfinden Sie Ihre eigene Konfigurationsdateinotation und parsen Sie diese.

+0

+1 für die Antwort, aber warum würden Sie execfile über einen Standardimport verwenden? – ChristopheD

+0

Weil ich möchte, dass die "Globals" in ein von mir erstelltes Wörterbuch geladen werden. Es ist kein richtiges Modul und ich möchte generell nur ein paar Globals. –

1

kann beliebigen Pfad des Home-Verzeichnis in einer plattformübergreifende Art und Weise des Benutzers verweisen, indem die gemeinsame ~ (Tilde) erweitert mit os.path.expanduser(), etwa so:

appdir = os.path.join(os.path.expanduser('~'), '.myapp') 
+0

Nicht ganz. Auf meiner Windows-Maschine wird 'os.path.expanduser ('~')' zu 'C: \ Dokumente und Einstellungen \ Vinay Sajip' erweitert, was nicht der empfohlene Ort zum Eingeben von Anwendungsdaten ist. Dieser empfohlene Ort wird von der Umgebungsvariablen 'APPDATA' angegeben, wie ich in meiner Antwort erwähnt habe. Beachten Sie, dass bei der Frage gefragt wurde, wo Anwendungskonfigurationsdaten gespeichert werden sollen und nicht, wie das Basisverzeichnis des Benutzers zu finden ist. Nicht das Gleiche! –

Verwandte Themen