Flask运行manage.py create_db命令提示web模块不存在的导入错误
问题根源
你的报错由两个配置错误共同导致:
- 项目根目录(Docker内的
/app路径,对应宿主机的web目录)下多余的__init__.py,让Python错误地将整个根目录识别为Python包 - 你配置的
FLASK_APP环境变量值错误,指向了不存在的web模块
解决方案
- 首先删除项目根目录下的
__init__.py,你只需要app目录作为业务包,不需要将整个项目根目录封装为Python包 - 调整你的Dockerfile或者docker-compose.yml中的环境变量配置,将
FLASK_APP的值改为manage - 保持Docker容器的工作目录为
/app不要改动,你当前app目录下的所有app.xxx格式的导入路径都是正确的,工作目录为/app时Python可以直接识别app这个包
补充说明:你之前从
/app/app目录运行manage.py时出现的app.app.web报错,就是因为根目录的__init__.py让Python将上层目录识别为包,拼接导入路径时出现了层级叠加的错误,删掉根目录的__init__.py即可避免该问题。
验证操作
修改完成后在容器内/app目录下执行python manage.py create_db即可正常执行数据库初始化操作。
内容的提问来源于stack exchange,提问作者3therk1ll
相关产品推荐
相关产品推荐

