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.
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.
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'
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.
Je ne sais pas pourquoi. Je le mettrai à jour quand je le comprendrai.
Recommended Posts