尝试用Python导入超出顶层包的相对导入。

问题描述 投票:0回答:1

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

Python允许我导入 market 从文件 my_app2/signals.py 但它返回 ValueError: attempted relative import beyond top-level package 如果我导入 portfolio 从文件 my_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_app1signals.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_app2signals.py

from ..my_app1 import market #  works
python django
1个回答
1
投票

我终于解决了这个问题,没有使用 from我也不清楚是什么原因导致的错误。

import my_app2.portfolio as portfolio
© www.soinside.com 2019 - 2024. All rights reserved.