首页 > 解决方案 > 如何将一个目录中的类导入另一个目录的子目录

问题描述

我目前正在尝试将一个目录中的类导入到另一个目录的子目录中。我尽量不使用 sys.path 并使用相对导入,但是它不断给出关于尝试相对导入但不知道父包的错误。所以我不知道将一个类从项目树中更高级别的目录导入到不同目录的孙子是否可行?在这种情况下,我想将 app 文件夹中的一个类导入ModelTestmodel.pyoutput.py 中。__init__.py除 myproject 目录外,所有子目录都有。

谢谢

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

myproject
  /mainModel
    /api
       /script
          /output.py

  /app
    /model.py

Django REST 框架

标签: djangoimportdjango-rest-frameworkdirectory

解决方案


如果您尝试from ....app.model import ModelTest从 开始myproject/mainModel/api/scripts/output.py,那么这将不起作用:

  • from .sibling_module import something尝试从“当前包的something兄弟模块”导入( )sibling_modulemyproject/mainModel/api/scripts/sibling_module.py:something
  • from ..sibling_of_current_package import foo:转到“当前模块当前包的父包”,然后转到模块“sibling_of_current_package”
  • ...
  • 这里的关键部分是“来自/来自PACKAGE的东西”,而你没有myproject/__init__.py, 所以appmainModel是顶级包。

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


推荐阅读