【问题标题】:Attempted relative import beyond top-level package with Python尝试使用 Python 进行顶级包之外的相对导入
【发布时间】: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

【问题讨论】:

标签: python django


【解决方案1】:

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

import my_app2.portfolio as portfolio

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2020-04-06
    • 2017-12-17
    • 1970-01-01
    • 2021-10-03
    • 2020-11-03
    • 2017-02-22
    相关资源
    最近更新 更多