Constitution
$ find . -type f
./test1/bin/test.py
./test1/conf/__init__.py
./test1/conf/test_settings.py
./submodule/__init__.py
./submodule/conf/__init__.py
./submodule/conf/submodule_settings.py
./submodule/submodule_test.py
Contenu python de l'appelant
$ cat ./test1/bin/test.py
# -*- coding: utf-8 -*-
import sys
import os
base_dir = os.path.dirname(__file__) + "/.."
sys.path.append( base_dir )
from conf import test_settings
#import conf.test_settings
sys.path.append(base_dir + "/../submodule")
import submodule_test
Contenu du sous-module
$ cat ./submodule/submodule_test.py
# -*- coding: utf-8 -*-
import sys
import os
#Même si vous essayez de rechercher dans votre répertoire avec une priorité, testez.Je vais lire la conf de py
sys.path.insert(0, os.path.dirname(__file__))
print sys.path
import conf.submodule_settings
$ cat ./submodule/submodule_test.py
# -*- coding: utf-8 -*-
import sys
import os
#Il ne doit y avoir aucun nom de module pour le sous-module dans la source d'importation, vous pouvez donc l'appeler correctement.
sys.path.insert(0, os.path.dirname(__file__) + "/../")
print sys.path
import submodule.conf.submodule_settings
Hmm. Vous pouvez le lire, mais vous devez corriger le nom du module. Il semble y avoir un meilleur moyen, mais je ne sais pas.
J'ai envie de lire un autre fichier de sous-module en tant que configuration, il semble donc que je pourrais me débarrasser de ce problème simplement en utilisant ConfigParser.