J'ai eu une erreur indiquant que Python n'a pas pu lire settings.ini

Contenu de cet article

Parfois, le code qui fonctionnait sur un PC ne fonctionnait pas sur un autre PC. La cause semble être que le chemin relatif n'a pas été lu correctement, je décrirai donc la solution comme un rappel. Je ne sais pas pourquoi la solution fonctionne à ce stade, je mettrai donc à jour l'article lorsque je le comprendrai.

table des matières

  1. Origines
  2. Organisation des événements
  3. Solution
  4. Pourquoi la solution fonctionne

1. Origines

Lorsque le code que j'ai écrit pour créer une application simple a commencé à dépasser 1000 lignes, j'ai commencé à ressentir la limite à l'écriture de code dans un fichier python d'une page, donc le traitement J'ai décidé de le diviser et de le gérer en le divisant en plusieurs fichiers python. Pour les valeurs initiales telles que les informations de connexion, j'ai décidé de créer un fichier settings.ini et de le lire à partir de `` `` settings.py en utilisant configparser```. J'ai également commencé à utiliser github l'autre jour pour gérer les mises à jour. Étant donné que la première fois se chevauchaient et que beaucoup de choses que je ne comprenais pas sont ressorties, je garderai une trace pour rappel.

2. Organisation des événements

Lorsque j'ai cloné le référentiel créé sur le PC principal de git vers le sous-PC, il y avait des choses qui ne fonctionnaient pas pour une raison quelconque. Ce que je n'ai pas compris, c'est que je ne pouvais pas lire settings.ini à partir de `` `` settings.py, qui était référencé par le chemin relatif.

Sur le PC principal, le code ci-dessous fonctionnait bien.

settings.py



import configparser

conf = configparser.ConfigParser()
conf.read('./settings.ini')

#Chemin du profil
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']

Cependant, lorsque je l'exécute sur un sous-PC, l'erreur suivante se produit. Apparemment, il s'est avéré que `` ''. / Settings.ini '' 'n'était pas chargé correctement.

raise KeyError(key)
KeyError: 'driver'

3. Solution

Si vous réécrivez ceci comme suit, cela fonctionnera.

settings.py


import configparser
import os

conf = configparser.ConfigParser()
path = os.path.join(os.path.dirname(__file__), 'settings.ini')
conf.read(path, 'UTF-8')

#Chemin du profil
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']

S'il s'agit d'un chemin relatif, il ne peut pas être lu correctement, donc j'ai lu le répertoire du fichier exécutable avec «os.path.dirname (__ file__)» «et l'ai spécifié directement, et cela a fonctionné. Cela peut être mieux lors de l'exécution de code dans un environnement différent.

4. Pourquoi la solution fonctionne

Je ne sais pas pourquoi. Je le mettrai à jour quand je le comprendrai.

Recommended Posts

J'ai eu une erreur indiquant que Python n'a pas pu lire settings.ini
J'ai eu une erreur dans vim ou zsh dans la série Python 3.7
J'ai eu une erreur lors de l'enregistrement avec OpenCV
À propos du point où python 3.x est resté bloqué en raison d'une erreur due à caching_sha2_password
J'ai eu une erreur lorsque j'ai mis opencv dans python3 avec Raspeye [Remedy]
J'obtiens une erreur d'importation avec Python Beautiful Soup
J'ai eu une erreur lors de l'utilisation de Tensorboard avec Pytorch
5 raisons pour lesquelles je suis entré dans Python
Lorsque j'ai installé python sur macOS et que je l'ai utilisé, j'ai eu une erreur lorsque j'ai mis une connexion https
J'ai eu un AttributeError en me moquant de la méthode ouverte en python
J'ai eu une erreur lorsque j'ai exécuté composer global require laravel / installer
J'ai envoyé un SMS avec Python
J'ai eu une erreur lorsque j'ai exécuté meteor add accounts-password
J'ai eu une erreur en essayant d'installer Xgboost et sa solution
J'ai eu une erreur liée à SSL avec l'installation de pip, donc je l'ai résolue.
TypeError: resolution () a obtenu un argument de mot-clé inattendu 'strict' dans Django
J'obtiens une erreur avec les pandas d'importation.
Ce que j'ai obtenu de Python Boot Camp
J'ai eu une erreur en essayant d'exécuter Hello World en langue Go
Je souhaite envoyer Gmail avec Python, mais je ne peux pas en raison d'une erreur
J'ai écrit un wrapper Tkinter semblable à un notebook IPython [Python]
J'ai créé un package extenum qui étend enum
Un mémo que j'ai écrit un tri rapide en Python
Créez une application qui devine les étudiants avec Python
Créer un environnement qui utilise Python avec Eclipse
Écrivons FizzBuzz avec une erreur: Version Python
Je suis resté coincé en installant Anaconda 4.3.0 qui est devenu Python 3.6
J'ai écrit un wrapper Gtk semblable à un notebook IPython [Python]
J'obtiens une erreur avec toutes les commandes yum
J'ai essayé d'envoyer un email avec SendGrid + Python
J'ai eu une erreur lorsque j'installe des pandas sur Mac, alors je l'ai traitée
J'obtiens une erreur lorsque j'essaie d'élever Python à la série 3 en utilisant pyenv dans Catalina