FastAPI启动触发ImportError:相对导入无已知父包求助
解决FastAPI启动时的token模块导入冲突问题
核心问题原因
你的自定义文件token.py与Python标准库的token模块重名,导致Python导入模块时优先加载了当前目录下的自定义文件,而非标准库模块。同时,自定义token.py中使用的相对导入from . import schemas,在该文件被当作顶层模块加载时(因标准库导入路径触发),不存在对应的父包,进而触发ImportError。
快速修复步骤
- 重命名自定义文件:将你的
token.py修改为非标准库重名的名称,比如auth_token.py或app_token.py。 - 更新所有导入引用:遍历项目中所有导入该文件的代码,将
import token或from . import token这类语句,替换为新的文件名(例如from . import auth_token)。 - 清理缓存:删除项目目录下的
__pycache__文件夹,避免旧的模块缓存干扰新的导入逻辑。
验证修复
完成上述操作后,重新执行uvicorn main:app --reload启动服务,检查导入错误是否消失。
后续避坑建议
- 永远不要使用Python标准库的模块名命名自定义文件(比如
json.py、datetime.py、token.py等),这类命名会直接引发模块导入冲突。 - 确保项目采用规范的包结构,若使用相对导入,需保证模块处于正确的包层级下(可通过在目录中添加
__init__.py文件明确包结构,Python 3.3+虽支持无__init__.py的命名空间包,但规范结构更易维护)。
内容的提问来源于stack exchange,提问作者Filiberto Medina
相关产品推荐
相关产品推荐

