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

AWS CodePipeline部署Django到Elastic Beanstalk遇ModuleNotFoundError求助

解决AWS Elastic Beanstalk部署Django时的ModuleNotFoundError问题

已将GitHub与AWS CodePipeline关联,尝试部署Django代码至AWS Elastic Beanstalk,但持续出现 ModuleNotFoundError: No module named 'my_site' 错误,至今3周未解决。

现有配置及目录结构

目录结构

-- .ebextensions
    -- django.config
-- ProcFile
-- tq_django
    -- my_site
        -- wsgi.py

ProcFile内容

web: gunicorn my_site.wsgi:application

wsgi.py内容

import os
import sys

sys.path.insert(0, '/var/app/current/tq_django/my_site')

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_site.settings')

application = get_wsgi_application()

.ebextensions/django.config内容

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: my_site.wsgi:application
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: my_site.settings
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /tq: static

问题分析

核心原因是Python无法找到my_site模块——my_site位于tq_django目录下,但当前配置未将tq_django添加到Python的搜索路径,反而错误地添加了my_site本身的路径,导致模块识别失败。

解决方案

1. 修正wsgi.py的路径设置

将添加路径的代码改为指向tq_django目录,让Python能找到该目录下的my_site模块:

import os
import sys

# 添加tq_django父目录到Python路径
sys.path.insert(0, '/var/app/current/tq_django')

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_site.settings')

application = get_wsgi_application()

2. 更新ProcFile的gunicorn命令

通过指定工作目录或设置PYTHONPATH,确保gunicorn能定位到my_site模块:

web: cd /var/app/current/tq_django && gunicorn my_site.wsgi:application

或更灵活的方式:

web: PYTHONPATH=/var/app/current/tq_django gunicorn my_site.wsgi:application

3. 修正django.config配置

更新WSGIPath为完整路径,并添加PYTHONPATH环境变量:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: tq_django/my_site.wsgi:application
  aws:elasticbeanstalk:application:environment:
    DJANGO_SETTINGS_MODULE: my_site.settings
    PYTHONPATH: "/var/app/current/tq_django:$PYTHONPATH"
  aws:elasticbeanstalk:environment:proxy:staticfiles:
    /tq: static

4. 补充requirements.txt(若缺失)

确保项目根目录存在requirements.txt,包含必要依赖:

django>=4.2
gunicorn>=21.2.0

5. 重新部署

将修改后的配置提交至GitHub,触发CodePipeline重新部署,验证错误是否解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:35:27