Python 3 中的相对导入:理解和解决方法
相对导入,通常用于在同一目录中导入模块,有时会导致错误,例如 ImportError 或 ModuleNotFoundError。了解根本原因对于解决这些问题至关重要。
Python 3 中的相对导入行为
在 Python 3 中,相对导入仅在模块导入其他模块时才起作用位于同一个包内。包是包含 __init__.py 文件的目录,指示其包状态。如果包中包含带有其他模块的子目录,从这些子目录到其他子目录中的模块的相对导入将会失败。
根包包含
要解决此问题,请确保所涉及模块的父目录是一个包,由 __init__.py 文件的存在表明。如果父目录不是包,则相对导入将失败,并显示错误“尝试在没有已知父包的情况下进行相对导入。”
错误:“ModuleNotFoundError:没有名为 'mymodule' 的模块”
当指定路径中不存在正在导入的模块(本例中为 mymodule)时,会发生此错误。验证模块是否存在且命名正确。
错误:“SystemError: 父模块 '' 未加载,无法执行相对导入”
此错误表明父模块(包含相对导入的模块)尚未加载。在尝试相对导入之前,确保父模块正在执行或导入。
相对导入的解决方法
如果避免相对导入不可行,可以使用以下解决方法:
关于在包中运行脚本的警告
Guido van Rossum,的创建者Python 认为在包中运行脚本是一种反模式,并将其视为不必要的。不过,对于有必要的场景,可以采用上述解决方法。
以上是为什么我的 Python 3 相对导入失败,如何修复它们?的详细内容。更多信息请关注PHP中文网其他相关文章!