2017-09-26 20 views
0
dir1\ 
    __init__.py 
    config.py 

dir2\ 
    __init__.py 
    module1.py 

Pour protéger les paramètres de configuration sensibles, je dispose d'un fichier config.py en disons dir1. J'ai dir2 qui a les principaux fichiers Python.Importation config.py à l'intérieur de différents __init__.py répertoire

Je souhaite que tous les modules de dir2 puissent accéder à config.py. J'ai donc pensé à l'importer une fois à l'intérieur __init__.py qui est à l'intérieur dir2.

Comment faire? J'ai essayé de mettre cela à l'intérieur __init__.py dans dir2:

# __init__.py in dir2 

import os 
import sys 

config_dir = os.path.join(os.environ['userprofile'],'Path','To','dir1') 
sys.path.append(config_dir) 

from dir1 import config 

Je mets cela dans module1.py

# module1.py 
from config import USERS 

mais quand je lance module1 je reçois:

ModuleNotFoundError: No module named 'config'.

+0

Est-ce que config.py définit un objet? Avez-vous essayé de le faire avec config.py dans le même répertoire? –

+0

'config.py' a seulement' lists' et 'dicts', comme' USERS' –

Répondre

0

Le répertoire avec l'importation nécessite un fichier __init__.py même s'il est vide. C'est ainsi que l'interpréteur Python peut reconnaître qu'il s'agit d'un module et qu'il est donc importable.

+0

Il en a un. J'ai oublié de mettre cela dans la question, va éditer maintenant. –

0

Jetez un oeil à cette réponse:

Importing files from different folder

Je pense que vous avez déjà trouvé la solution, il vous suffit de mettre le code que vous avez placé dans dir2/__init__.py dans module1.py et tout autre module dans lequel vous voulez utiliser des fichiers de dir1. Pour autant que je sache, le fichier __init__.py permet à Python de reconnaître le dossier, mais pas le code d'initialisation réel d'un projet.