2017-10-13 1 views
0

Les fichiers dont j'ai besoin dans le répertoire ressembler àont des problèmes dans les classes importation d'un autre fichier dans le dossier parent

face/util/load_data.py

face/preprocessing.py

preprocessing.py définit les classes FaceDetector, FaceAligner et la méthode clip_to_range Je veux importer ces classes dans load_data.py J'essaye d'exécuter cet état ment intérieur load_data.py

from preprocessing import FaceDetector, FaceAligner, clip_to_range 

Je reçois l'erreur

Traceback (most recent call last): 
    File "utils/load_data.py", line 7, in <module> 
    from preprocessing import FaceDetector, FaceAligner, clip_to_range 
ImportError: cannot import name 'FaceDetector' 

Pouvez-vous s'il vous plaît me dire comment importer correctement ces classes?

+0

Quel fichier est exécuté en premier? – Montreal

+0

J'exécute load_data.py seulement – benedemon

+0

python3 utils/load_data.py – benedemon

Répondre

0

Vous pouvez essayer d'ajouter __init__.py

qui vous permettra d'importer le module face, vous pouvez importer comme,

from face.preprocessing import FaceDetector, FaceAligner, clip_to_range 

Mise à jour: Une autre façon est d'insérer le module dans sys.path ,

import os,sys,inspect 
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) 
parentdir = os.path.dirname(currentdir) 
sys.path.insert(0,parentdir) 

import preprocessing 
0

déplacez preprocessing.py vers le répertoire util.

Recherchez le fichier dans le chemin du fichier exécuté.

Si vous ne souhaitez pas modifier la structure du répertoire. Ajoutez le code suivant.

import os,sys,inspect 
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) 
parentdir = os.path.dirname(currentdir) 
sys.path.insert(0,parentdir) 

L'importation est possible quelle que soit la structure du répertoire.

Vous pouvez résolu.