You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zappa部署Django至AWS Lambda遇psycopg2错误及包体积过大求助

解决Zappa部署Django到AWS Lambda的两个问题

一、修复psycopg2模块加载错误

日志里的ImproperlyConfigured: Error loading psycopg2 module: No module named 'psycopg2._psycopg',是因为本地安装的psycopg2/psycopg2-binary和AWS Lambda的Amazon Linux运行环境不兼容,而aws-psycopg2是专门为AWS环境编译的适配版本。

解决步骤:

  • 打开requirements.txt,删除psycopg2==2.9.3和psycopg2-binary==2.9.6这两行,只保留aws-psycopg2==1.3.8
  • 重新安装依赖:执行pip install -r requirements.txt
  • 检查Django配置文件settings.py中的数据库引擎,确保是django.db.backends.postgresql_psycopg2,示例:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'your_db_name',
        'USER': 'your_db_user',
        'PASSWORD': 'your_db_password',
        'HOST': 'your_db_host',
        'PORT': '5432',
    }
}
  • 重新部署项目:zappa update dev

二、解决部署包体积持续增大的问题

首次部署后包体积逐渐变大,是因为Zappa会缓存构建文件,加上一些不必要的开发依赖、缓存文件被打包进去。

解决步骤:

  • 清理Zappa本地缓存:删除项目根目录下的.zappa文件夹,这个文件夹存储了之前的构建缓存,删除后会重新生成干净的构建文件
  • 拆分依赖:把开发环境专用的依赖(比如flake8)移到单独的dev-requirements.txt,部署时只安装生产依赖
  • 扩展Zappa配置的exclude列表,排除更多不需要打包的内容,修改后的配置示例:
{
    "dev": {
        // 其他原有配置...
        "exclude": [
            ".env",
            ".git",
            "__pycache__",
            "*.pyc",
            "*.pyo",
            "tests/",
            "docs/",
            "staticfiles/",
            "media/",
            ".github/"
        ]
    }
}
  • 启用预编译包:在Zappa配置的dev节点添加"use_precompiled_packages": true,这个选项会使用Lambda兼容的预编译包,减少冗余编译文件
  • 彻底重置部署(可选):如果上述方法效果有限,可以先执行zappa undeploy dev清空旧的Lambda资源,再重新执行zappa deploy dev

内容的提问来源于stack exchange,提问作者Anna Berezko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:57:36