如何从顶层目录中的另一个目录相对导入模块(python)?

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

我有一个项目的结构如下:

project/ 
    main.py
    package1/
        module1.py
        module2.py
        subpackage1/
            module4.py
    package2/
        module3.py 
# main.py
from package1 import module1
# module1.py
from . import module2
from .subpackage1 import module4
# module4.py
from .. import module2

如果我从顶级目录运行

python main.py
,到目前为止一切都很好。但是,如果我将以下行添加到
module1.py

# module1.py
from . import module2
from .subpackage1 import module4
from ..package2 import module3     # add this line

我收到错误

ValueError: attempted relative import beyond top-level package
。应该如何相对导入顶级目录的另一个目录中的模块?还是说不可能?

另一个奇怪的发现是以下工作

from . import module2
from .subpackage1 import module4   # this line does NOT work without the '.' relative import
from package2 import module3       # removing relative import works ```
python python-3.x python-import
1个回答
0
投票

Python 不允许您跳转到不同的顶级包,这就是您收到错误的原因。您应该考虑使用绝对导入。

from . import module2
from .subpackage1 import module4
from package import module3

如果项目文件位于您的 python 路径中,这应该可以工作。 希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.