Manchmal funktionierte der Code, der auf einem PC funktionierte, auf einem anderen PC nicht. Die Ursache schien zu sein, dass der relative Pfad nicht richtig gelesen wurde, daher werde ich die Lösung als Erinnerung beschreiben. Ich weiß nicht, warum die Lösung zu diesem Zeitpunkt funktioniert, daher werde ich den Artikel aktualisieren, wenn ich ihn verstehe.
Als der Code, den ich zum Erstellen einer einfachen Anwendung schrieb, mehr als 1.000 Zeilen umfasste, spürte ich die Grenze für das Schreiben von Code in eine einseitige Python-Datei, also für die Verarbeitung
Ich beschloss, es zu teilen und zu verwalten, indem ich es in mehrere Python-Dateien aufteilte.
Für die Anfangswerte wie Anmeldeinformationen habe ich beschlossen, eine `settings.ini```-Datei zu erstellen und sie mit`
configparser aus `` `settings.py
zu lesen.
Ich habe neulich auch angefangen, Github zu verwenden, um Updates zu verwalten.
Da sich das erste Mal überlappte und viele Dinge, die ich nicht verstand, herauskamen, werde ich zur Erinnerung ein Protokoll führen.
Als ich das auf dem Haupt-PC erstellte Repository von Git auf den Sub-PC geklont habe, gab es einige Dinge, die aus irgendeinem Grund nicht funktionierten.
Was ich nicht verstanden habe war, dass ich `settings.ini``` nicht aus`
settings.py``` lesen konnte, auf das durch den relativen Pfad verwiesen wurde.
Auf dem Haupt-PC funktionierte der folgende Code einwandfrei.
settings.py
import configparser
conf = configparser.ConfigParser()
conf.read('./settings.ini')
#Profilpfad
PROFILE_PATH = conf['driver']['PROFILE_PATH']
# saleceforce
Saleceforce_ID = conf['saleceforce']['Saleceforce_ID']
Saleceforce_PASS = conf['saleceforce']['Saleceforce_PASS']
Saleceforce_ADDRESS = conf['saleceforce']['Saleceforce_ADDRESS']
Wenn ich dies jedoch auf einem Sub-PC ausführe, tritt der folgende Fehler auf. Anscheinend stellte sich heraus, dass `` `'. / Settings.ini'``` nicht richtig geladen wurde.
raise KeyError(key)
KeyError: 'driver'
Wenn Sie dies wie folgt umschreiben, funktioniert es.
settings.py
import configparser
import os
conf = configparser.ConfigParser()
path = os.path.join(os.path.dirname(__file__), 'settings.ini')
conf.read(path, 'UTF-8')
#Profilpfad
PROFILE_PATH = conf['driver']['PROFILE_PATH']
# saleceforce
Saleceforce_ID = conf['saleceforce']['Saleceforce_ID']
Saleceforce_PASS = conf['saleceforce']['Saleceforce_PASS']
Saleceforce_ADDRESS = conf['saleceforce']['Saleceforce_ADDRESS']
Wenn es sich um einen relativen Pfad handelt, kann er nicht gut gelesen werden. Daher habe ich das Verzeichnis der ausführbaren Datei mit `os.path.dirname (__ file __)`
gelesen und direkt angegeben, und es hat funktioniert.
Dies ist möglicherweise besser, wenn Code in einer anderen Umgebung ausgeführt wird.
Ich weiß nicht warum. Ich werde es aktualisieren, wenn ich es verstehe.
Recommended Posts