Ich habe eine Fehlermeldung erhalten, dass Python die Datei settings.ini nicht lesen konnte

Inhalt dieses Artikels

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.

Inhaltsverzeichnis

  1. Hintergrund
  2. Anordnung der Ereignisse
  3. Lösung
  4. Warum die Lösung funktioniert

1. Hintergrund

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.

2. Anordnung der Ereignisse

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'

3. Lösung

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.

4. Warum die Lösung funktioniert

Ich weiß nicht warum. Ich werde es aktualisieren, wenn ich es verstehe.

Recommended Posts

Ich habe eine Fehlermeldung erhalten, dass Python die Datei settings.ini nicht lesen konnte
Ich habe einen Fehler in vim oder zsh in der Python 3.7-Serie
Beim Speichern mit OpenCV ist ein Fehler aufgetreten
Über den Punkt, an dem Python 3.x aufgrund eines Fehlers aufgrund von caching_sha2_password hängen blieb
Ich habe eine Fehlermeldung erhalten, als ich opencv mit Raspeye in Python3 eingefügt habe [Remedy]
Ich erhalte einen Importfehler mit Python Beautiful Soup
Bei der Verwendung von Tensorboard mit Pytorch ist ein Fehler aufgetreten
5 Gründe, warum ich zu Python gekommen bin
Als ich Python unter macOS installiert und verwendet habe, wurde beim Herstellen einer https-Verbindung eine Fehlermeldung angezeigt
Ich habe einen AttributeError erhalten, als ich die offene Methode in Python verspottet habe
Ich habe eine Fehlermeldung erhalten, als ich Composer Global Require Laravel / Installer ausgeführt habe
Ich habe eine SMS mit Python gesendet
Ich habe eine Fehlermeldung erhalten, als ich Meteor Add Accounts-Passwort ausgeführt habe
Beim Versuch, Xgboost und seine Lösung zu installieren, ist ein Fehler aufgetreten
Ich habe einen SSL-bezogenen Fehler bei der Pip-Installation erhalten und ihn behoben.
Ich habe einen unbekannten Fehler in Django erhalten: TypeError: resolve () hat ein unerwartetes Schlüsselwortargument'strict 'erhalten.
Ich erhalte eine Fehlermeldung beim Import von Pandas.
Was ich von Python Boot Camp bekommen habe
Beim Versuch, Hello World in der Sprache Go auszuführen, ist eine Fehlermeldung aufgetreten
Ich möchte Google Mail mit Python senden, kann dies jedoch aufgrund eines Fehlers nicht
Ich habe einen IPython Notebook-ähnlichen Tkinter-Wrapper geschrieben [Python]
Ich habe ein Extenum-Paket erstellt, das die Enumeration erweitert
Ein Memo, das ich schnell in Python geschrieben habe
Erstellen Sie eine App, die Schüler mit Python errät
Erstellen einer Umgebung, die Python mit Eclipse verwendet
Schreiben wir FizzBuzz mit einem Fehler: Python-Version
Ich blieb bei Anaconda 4.3.0 hängen, das zu Python 3.6 wurde
Ich habe einen IPython Notebook-ähnlichen Gtk-Wrapper geschrieben [Python]
Ich erhalte eine Fehlermeldung mit allen yum-Befehlen
Ich habe versucht, eine E-Mail mit SendGrid + Python zu senden
Ich habe eine Fehlermeldung erhalten, als ich Pandas auf einem Mac installiert habe, also habe ich mich damit befasst
Ich erhalte eine Fehlermeldung, wenn ich versuche, Python mit pyenv in Catalina auf 3 Serien zu erhöhen