为何执行from . import models时出现ImportError未知父包错误?
出现该错误的原因
脚本被直接执行,未作为包模块导入
像from . import models这种相对导入,要求你的代码是Python包体系的一部分,且通过包层级被导入运行。如果直接用python xxx.py执行这个文件,Python会把它当成独立的顶级脚本,而非某个包下的模块,此时没有父包上下文,自然触发这个错误。当前目录未被识别为Python包
Python要把一个目录视为包,要么目录下存在__init__.py文件(Python 3.3+虽支持无__init__.py的命名空间包,但相对导入对这类包的支持有限),要么该目录没被加入Python的模块搜索路径sys.path,这都会导致相对导入找不到父包。项目结构和教程不匹配
教程里的代码大概率是在完整的包结构下编写的,比如典型结构:my_project/ __init__.py models.py main.py # 在这里写from . import models如果你的项目缺少
__init__.py,或者脚本所在的层级和教程不一样,就会出现相对导入的上下文不匹配问题。
内容的提问来源于stack exchange,提问作者Ryperson
相关产品推荐
相关产品推荐

