在 Python 中实现相对导入
在 Python 中使用分层目录结构时,有必要从其他子目录导入模块。使用“..”的传统相对导入在某些情况下可能会导致错误。特别是,当通过将模块作为参数传递给解释器来将其作为主模块执行时,相对导入会失败。
根据 PEP 328,相对导入依赖于模块的 name 属性确定其在包层次结构中的位置。但是,当 name 设置为 '__main__' 时(就像将模块作为主模块运行时的情况一样),相对导入将被解析为就像该模块是顶级模块一样,无论其文件如何系统位置。
为了解决这个问题,Python 2.6 引入了引用相对于主模块的模块的功能。 PEP 366 中对此进行了描述。通过利用此功能,可以执行相对导入,而不会遇到“尝试在非包中进行相对导入”错误。
示例:
在如下目录结构中:
要从 mod1 导入 mod2,您可以使用以下命令语法:
或者,如果您没有将该模块作为主模块运行,则通常的相对导入语法将起作用:
以上是如何在 Python 中可靠地实现相对导入?的详细内容。更多信息请关注PHP中文网其他相关文章!