FastAPI相对导入超出顶级包错误求助:无法导入schema与models
问题求助
文件结构如下(附截图):
在routers/blog.py文件中,我使用语句 from ..Blog import schema, models 尝试导入Blog目录下的schema和models文件,却触发错误:
from ..Blog import schema, models ImportError: attempted relative import beyond top-level package
我已参考相关方案,但问题仍未解决,特此求助。
解决方案
改用绝对导入:因为
routers和Blog是同级目录,直接替换导入语句为from Blog import schema, models。同时需要确保项目根目录被添加到Python的模块搜索路径中:- 可以在项目入口脚本(比如根目录下的
main.py)中添加代码:import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__))) - 或者手动设置系统环境变量
PYTHONPATH,将其值设为项目根目录的绝对路径。
- 可以在项目入口脚本(比如根目录下的
确保目录被识别为包:在
Blog、routers等目录下添加空的__init__.py文件,让Python明确将这些目录视为可导入的包(Python 3.3+支持命名空间包,但显式添加该文件能避免很多导入问题)。正确启动项目:不要直接运行
routers/blog.py,而是从项目根目录运行入口脚本(比如main.py)。这样Python会将项目根目录作为顶级包,相对导入就不会出现“超出顶级包”的问题。
内容的提问来源于stack exchange,提问作者Po_
相关产品推荐
相关产品推荐

