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

AWS部署Django应用遇deterministic=True报错,修改文件后仍未解决?

解决AWS Elastic Beanstalk部署Django时SQLite版本过低的报错

核心问题原因

你手动修改/var/app/current/venv下的文件无效,因为Elastic Beanstalk部署时会使用独立的staging虚拟环境(即/var/app/venv/staging-*),部署过程不会同步你手动修改的内容,导致旧的SQLite导入逻辑依然生效。

解决方案

方案1:使用django-sqlite3替代默认后端(推荐)

这是最规范的方式,无需修改Django源码:

  • 安装依赖:
    pip install django-sqlite3
    
  • 修改项目settings.py中的数据库配置,替换ENGINE:
    DATABASES = {
        'default': {
            'ENGINE': 'django_sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
    
  • 将django-sqlite3添加到requirements.txt,然后重新执行:
    eb deploy
    

方案2:自动替换staging环境的Django源码导入

如果必须沿用默认SQLite后端,可通过EB配置文件在部署时自动修改staging环境的文件:

  1. 在项目根目录创建.ebextensions文件夹,新建配置文件01_fix_sqlite.config
  2. 写入以下内容(可直接用通配符staging-*匹配所有staging虚拟环境):
    container_commands:
      01_replace_sqlite_import:
        command: |
          sed -i "s/from sqlite3 import dbapi2 as Database/from pysqlite3 import dbapi2 as Database/" /var/app/venv/staging-*/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py
        leader_only: true
    
  3. 确保requirements.txt中包含pysqlite3,然后执行eb deploy

方案3:升级到Amazon Linux 2环境

Amazon Linux 1默认的SQLite版本较低,而Amazon Linux 2自带满足3.8.3+要求的高版本SQLite,直接升级EB环境的操作系统版本,可从根本解决该问题。

内容的提问来源于stack exchange,提问作者Daniel Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:45:57