【发布时间】:2020-04-30 12:37:19
【问题描述】:
我看到了几个与此错误相关的问题,但我认为它们是不同的情况。我的 Django 项目有 2 个应用程序和这样的目录结构,我遇到了相对导入的问题,我不明白其中的逻辑。
Python 允许我从文件 my_app2/signals.py 导入 market,但如果我从文件 my_app1/signals.py 导入 portfolio,它会返回 ValueError: attempted relative import beyond top-level package。原因是什么,我怎样才能找到解决方法?
/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
【问题讨论】:
-
恐怕这不适用于我的情况,
sys.path.append(".")或sys.path.append("..")不能解决问题。