这是我目录结构的图片:
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风格?
答案 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?
中所述