Python之FastAPI框架~关于“tortoise.exceptions.ConfigurationError: Module “models“ not found”的原因分析与解决方法

1.事件发生背景:

1.1已经使用Aerich迁移过一次模型,并且初始化了数据库操作;

1.2新增用户账号密码时的验证功能,需要创建新的模型对象,重新迁移;

1.3models.py与其他py文件存在循环调用情况;

util.py:

from models import UserDB, User

models.py:

from util import generate_token

2.问题分析:

2.1报错分析1:根据报错行代码的错误提示有两行代码错了,最直接的是tortoise.exceptions.ConfigurationError: Module "models" not found,直接提示了tortoise的配置文件里面诈骗不到models模块,但是加了项目名.models之后重新迁移还是报一样的错,说明不是模型文件的模块路径问题导致的;

2.2报错分析2:另外一行报错提示是说models.py与util.py存在循环调用情况,导致模块导入不了,

有可能是这原因,接下来解决方法着重从这方面入手;

3.解决方法:

3.1将util.py的导包“from models import UserDB, User”位置由代码顶部移到函数内部,这个叫延迟导入;

3.2删除迁移的包migration和pyproject.toml文件;

3.3重新运行迁移环境初始化命令:aerich init -t tortoise系统的迁移配置(比如aerich init -t setting.tortoise_config),初始化数据库命令aerich init-db,发现新增的模型对象迁移到数据成功!

4.总结:

综上所述,此次问题是由于文件之间的相互调用导致的Module "models" not found”以致Aerich迁移工具无法生成迁移命令进行迁移的根本原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值