使用Zappa部署Python连接AWS RDS PostgreSQL时遇模块找不到错误
Zappa部署Python应用连接RDS PostgreSQL的模块找不到问题修复
问题核心
你的app.py放在src目录下,但Zappa配置里的app_function写的是app.app,部署时Zappa从项目根目录(RDS_Postgres_Zappa)查找模块,自然找不到app,这就是报错ModuleNotFoundError: No module named 'app'的直接原因。
修复步骤
1. 修改zappa_settings.json的应用路径
把dev配置里的app_function改成src.app.app,让Zappa能正确定位到src目录下的app模块:
"dev": { "app_function": "src.app.app", "aws_region": "ap-south-1", "profile_name": "default", "project_name": "rds-postgres-py", "runtime": "python3.8", "s3_bucket": "zappa-aoxdyg89v" }
2. 确认src为合法Python包
你已经在src目录下创建了__init__.py,这一步无需额外操作;如果后续仍有问题,可以检查该文件是否存在语法错误。
3. 重新部署并验证
在RDS_Postgres_Zappa目录下激活虚拟环境,执行重新部署命令:
zappa update dev
部署完成后,用zappa tail dev查看日志,确认模块找不到的错误是否消失,再访问API测试响应是否正常。
额外注意点
- 必须在项目根目录(
RDS_Postgres_Zappa)下执行Zappa命令,不要进入src目录操作 - 确保虚拟环境中已安装所有依赖(比如PostgreSQL的
psycopg2-binary),Zappa会打包虚拟环境内的依赖到Lambda - 确认
app.py中的app变量是框架的应用实例(比如Flask中的app = Flask(__name__))
内容的提问来源于stack exchange,提问作者Anish
相关产品推荐
相关产品推荐

