问题定义:
尝试从 Python 文件进行相对导入时作为顶级脚本执行(例如,通过输入 python myfile.py),遇到错误消息: “尝试在非包中进行相对导入。”
理解模块与脚本:
关键区别在于 Python 在加载时如何解释文件。当直接作为脚本运行时,文件的名称为“__main__”。当从另一个文件作为模块导入时,其名称反映了其包结构(例如“package.subpackage.module”)。
相对导入限制:
相对导入依赖模块的全名来确定其在包层次结构中的位置。如果模块的名称不包含包信息(例如“__main__”),则相对导入会失败,因为该模块不被视为包的一部分。
错误说明:
当模块的全名缺少点时,表明没有包关联,Python将其解释为独立脚本,并且相对导入无效。在以下情况下会发生此错误:
解决方案:
附加说明:
以上是为什么直接运行Python脚本时相对导入会失败?的详细内容。更多信息请关注PHP中文网其他相关文章!