如何将一个类从目录导入另一个目录的子级

时间:2019-05-03 19:55:47

标签: django import django-rest-framework directory

我目前正在尝试将一个类从目录导入另一个目录的子目录。我尝试不使用sys.path并使用相对导入,但是它一直在给出有关尝试在不知道父包的情况下进行相对导入的错误。因此,我不知道从项目树中具有较高级别的目录中将类导入另一个目录的孙子是否可行?在这种情况下,我想将应用文件夹中ModelTest中的类model.py导入到output.py。除myproject目录外,所有子目录都具有__init__.py

谢谢

这是我的项目树,app和mainModel处于同一级别:

myproject
  /mainModel
    /api
       /script
          /output.py

  /app
    /model.py

Django REST框架

1 个答案:

答案 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,因此appmainModel是顶部-级包。

这意味着您不能使用相对导入来“导入超出它们的任何东西”。因此,您需要使用绝对导入(from app.model import ModelTest