从父文件夹中的另一个文件导入类时出现问题

时间:2017-10-13 05:02:53

标签: python python-3.x python-3.6

目录中我需要的文件看起来像

face/util/load_data.py

face/preprocessing.py

preprocessing.py定义了类FaceDetectorFaceAligner和方法clip_to_range

我想将这些类导入load_data.py 我正在尝试在load_data.py

中执行此声明
from preprocessing import FaceDetector, FaceAligner, clip_to_range

我收到错误

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'

您能告诉我如何正确导入这些课程吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试添加__init__.py

这将允许您导入面部模块,然后您可以导入类似,

from face.preprocessing import FaceDetector, FaceAligner, clip_to_range

<强>更新 另一种方法是在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

答案 1 :(得分:0)

preprocessing.py移至util目录。

在执行文件的路径中查找文件。

如果您不想更改目录结构。添加以下代码。

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)

无论目录结构如何,都可以导入。

你可以解决。