python模块导入问题

时间:2015-09-30 03:10:06

标签: python python-2.7

这是我目录结构的图片:

parts.py
machine/
    __init__.py
    parts.py

我有一个名为machine

的目录(包)

中有__init__.py和parts.py

与机器处于同一级别,有一个名为parts.py

的文件 在part.py中的

,代码如下所示:

#parts.py
class Parts(object):
    pass

在machine.parts中,代码看起来像这样

 #machine.parts
 from parts import Parts
 class MachineParts(Parts):
     pass

当我尝试导入machine.parts时,出现导入错误。我不想改变我的目录结构。我该如何解决这个问题并保持良好的PEP8风格?

2 个答案:

答案 0 :(得分:1)

您应该通过添加顶级__init__.py并为顶级目录提供一些有意义的名称来使其成为一个包:

mypackage
    __init__.py
    parts.py
    machine/
        __init__.py
        parts.py

然后,使用绝对导入:

#machine.parts
from mypackage.parts import Parts
class MachineParts(Parts):
    pass

答案 1 :(得分:0)

由于import支持相对导入,请尝试:

from ..parts import Parts

另一种选择是使用绝对导入:

from appname.parts import Parts

正如How to import a Python class that is in a directory above?

中所述