VS中出现“attempted relative import with no known parent package”错误如何解决?
解决Python相对导入报错:ImportError: attempted relative import with no known parent package
问题原因
你直接用Python解释器运行单个urls.py文件时,这个文件会被当作独立的顶层脚本,而非某个包的子模块。此时代码里的相对导入from . import views(.代表当前包)找不到对应的父包上下文,所以触发报错。
可行解决方案
方案1:以模块方式从父目录运行
切换到项目根目录C:\storefront,用-m参数以模块形式运行playground.urls,命令如下:PS C:\storefront> & C:/Users/ANJALY/.virtualenvs/storefront-qOrq4PPp/Scripts/python.exe -m playground.urls这种方式会让Python把
playground识别为一个包,相对导入就能正常找到views模块。方案2:替换相对导入为绝对导入
修改urls.py里的导入语句,把相对导入改成基于包名的绝对导入:# 原代码 from . import views # 修改后 from playground import views如果运行时还是找不到
playground包,可在urls.py开头添加代码,手动把项目根目录加入Python的搜索路径:import sys import os # 获取当前文件的父目录的父目录(即storefront目录) sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))方案3:确保playground是合法Python包
检查playground目录下是否存在__init__.py文件(可以是空文件),如果没有就创建一个。这个文件是Python识别目录为包的标志,配合方案1使用效果更好。
内容的提问来源于stack exchange,提问作者Ajvj
相关产品推荐
相关产品推荐

