Python 相对导入错误:排除“尝试在顶级包之外进行相对导入”
在 Python 中,相对导入允许您引用模块在相对于当前目录的包内。但是,尝试超出顶级包的相对导入可能会导致错误“ValueError:尝试超出顶级包的相对导入。”
请考虑以下包结构:
package/ __init__.py A/ __init__.py foo.py test_A/ __init__.py test.py
使用 python -m test_A.test 在包目录中执行 test.py 时,遇到上述错误。原因是 Python 不保留 test_A.test 所在顶级包的信息。
当使用 from ..A import foo 时,Python 会尝试访问与加载位置同级的目录。但是,在这种情况下,不存在同级目录的概念,因为 package 不被识别为包。
相反,执行 python -m package.test_A.test 可以正确解析相对导入,因为 Python 可以识别包作为顶级包并导航其子目录 test_A。
但是,Python 无法将当前工作目录识别为包仍然是一个谜。尽管它很实用,但在尝试从顶级目录进行相对导入时,这种疏忽可能会导致错误。
以上是如何解决Python的'尝试超出顶级包的相对导入”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!