我目前正在尝试将一个类从目录导入另一个目录的子目录。我尝试不使用sys.path并使用相对导入,但是它一直在给出有关尝试在不知道父包的情况下进行相对导入的错误。因此,我不知道从项目树中具有较高级别的目录中将类导入另一个目录的孙子是否可行?在这种情况下,我想将应用文件夹中ModelTest
中的类model.py
导入到output.py。除myproject目录外,所有子目录都具有__init__.py
。
谢谢
这是我的项目树,app和mainModel处于同一级别:
myproject
/mainModel
/api
/script
/output.py
/app
/model.py
Django REST框架
答案 0 :(得分:0)
如果您尝试从from ....app.model import ModelTest
开始myproject/mainModel/api/scripts/output.py
,则此操作将无效:
from .sibling_module import something
尝试从“当前程序包的同级模块something
”(sibling_module
)中导入myproject/mainModel/api/scripts/sibling_module.py:something
from ..sibling_of_current_package import foo
:转到“当前模块当前软件包的父软件包”,然后转到模块“ sibling_of_current_package” myproject/__init__.py
,因此app
和mainModel
是顶部-级包。 这意味着您不能使用相对导入来“导入超出它们的任何东西”。因此,您需要使用绝对导入(from app.model import ModelTest
)