Le matériel couvert par le nom du module ne peut pas être appelé correctement à la destination / source d'importation.

Aperçu de la tâche

la reproduction

configuration et contenu du module

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

Solution

1. Appelez le sous-module d'un niveau supérieur

$ 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.

2. Utilisez ConfigParser

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.

Recommended Posts

Le matériel couvert par le nom du module ne peut pas être appelé correctement à la destination / source d'importation.
Vérifiez le nom du fichier si l'importation Python vous dit que vous ne pouvez pas
La sortie du fichier avi par OpenCV ne peut pas être lue