首页 > 解决方案 > 尝试使用 Python 进行顶级包之外的相对导入

问题描述

我已经看到了几个与此错误相关的问题,但我认为它们是不同的情况。我的 Django 项目有 2 个应用程序和这样的目录结构,我遇到了相对导入的问题,我不明白其中的逻辑。

Python 允许我market从文件导入,但如果我从文件导入,my_app2/signals.py它会返回。原因是什么,我怎样才能找到解决方法? ValueError: attempted relative import beyond top-level packageportfoliomy_app1/signals.py

/my_project
  /my_project
    __init__.py
  /my_app1
    market.py
    signals.py  #  Here I can't import portfolio.py
  /my_app2
    portfolio.py 
    signals.py  #  Here I can import market.py

my_app1/signals.py

from ..my_app2 import portfolio #  doesn't work
ValueError: attempted relative import beyond top-level package

from my_project.my_app2 import portfolio #  doesn't work
ModuleNotFoundError: No module named 'my_project.my_app2'

my_app2/signals.py

from ..my_app1 import market #  works

标签: pythondjango

解决方案


我终于在不使用的情况下解决了这个问题from,我不清楚是什么导致了错误。

import my_app2.portfolio as portfolio

推荐阅读