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

dir2\ 
    __init__.py 
    module1.py 

Um sensible Konfigurationseinstellungen zu schützen, habe ich eine Datei config.py in der dir1 sagen lassen. Ich habe dir2, die die wichtigsten Python-Dateien hat.Importieren config.py innerhalb __init__.py aus verschiedenen Verzeichnis

Ich möchte, dass alle Module in dir2 auf config.py zugreifen können. So dachte ich, es einmal innerhalb __init__.py zu importieren, das innerhalb dir2 ist.

Wie mache ich das? Ich habe versucht, diese in __init__.py in dir2 setzen:

# __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 

Ich habe dies in module1.py

# module1.py 
from config import USERS 

aber wenn ich module1 laufen erhalte ich:

ModuleNotFoundError: No module named 'config'.

+0

Definiert config.py ein Objekt? Hast du es auch mit config.py im selben Verzeichnis versucht? –

+0

'config.py' hat nur' lists' und 'dicts', wie zum Beispiel' USERS' –

Antwort

0

Das Verzeichnis mit dem Import benötigt eine __init__.py Datei, auch wenn sie leer ist. Dies ist der Fall, damit der Python-Interpreter erkennen kann, dass es ein Modul ist und daher importiert werden kann.

+0

Es hat einen. Vergessen, das in die Frage zu stellen, wird jetzt bearbeiten. –

0

Werfen Sie einen Blick auf diese Antwort:

Importing files from different folder

Ich glaube, Sie bereits die Lösung gefunden, müssen Sie nur den Code setzen, die Sie in dir2/__init__.py in module1.py und jedes andere Modul platziert, in dem Sie um Dateien von dir1 zu verwenden.

Soweit ich verstehe, ist die __init__.py Datei nur für Python, den Ordner zu erkennen, aber nicht für den tatsächlichen Initialisierungscode für ein Projekt.

Verwandte Themen