相对导入中超出顶级包错误
当从包的子模块执行相对导入时,会发生令人费解的错误在包目录中。具体来说,遇到了错误“ValueError:尝试相对导入超出顶级包”。
此错误源于 Python 的特殊行为,即不记录加载包的位置。因此,当使用 python -m package_name.module_name 运行模块时,当前工作目录不被视为包。
因此,像 from ..A import foo 这样的相对导入尝试,旨在访问模块在同级目录中,会导致错误消息。这是因为 Python 缺乏对同级目录的必要引用。
相反,使用 python -m package_name.package_submodule.module_name 运行模块可以成功解析 from ..A import foo 导入语句。在这种情况下,Python 保留了父目录的信息,这使得访问同级目录成为可能。
目前还不清楚为什么 Python 不将当前工作目录视为一个包,尽管它很实用。从包目录中执行相对导入时,此限制可能会导致混乱和意外错误。
以上是为什么使用'python -m”时 Python 从包目录进行相对导入失败?的详细内容。更多信息请关注PHP中文网其他相关文章!