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
相关产品推荐
相关产品推荐

