gpt4 book ai didi

python - 无法在 AWS Elastic Beanstalk 上找到 Django 应用程序的模块

转载 作者:太空狗 更新时间:2023-10-30 02:10:48 26 4
gpt4 key购买 nike

我正在尝试让 Django 应用程序在 AWS Elastic Beanstalk 上运行,但我被卡住了,似乎是 PYTHONPATH 或 virtualenv 问题,我无法弄清楚。

当我尝试在浏览器中加载页面时,出现黄色的 Django 错误屏幕(我仍处于 Debug模式):

Exception Value: No module named views.rest
Exception Location: /opt/python/current/app/project/urls.py in <module>, line 3
Python Executable: /opt/python/run/venv/bin/python
Python Version: 2.7.5
Python Path:
['/opt/python/run/venv/lib/python2.7/site-packages',
'/opt/python/current/app',
...

我的 urls.py 导入是:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from myapp.views.rest import *

如果我通过 ssh 进入 EC2 实例,路径看起来是正确的; /opt/python/current/app 包含我的应用程序,包括 /opt/python/current/app/myapp/views/rest.py

我的目录结构包含(当然还有更多):

app/
.ebextensions/
packages.config
python.config
.elasticbeanstalk/
config
optionsettings.myapp-deployment-env
project/
settings.py
application.py
myapp/
views/
rest.py
views.py
__init__.py

__init__.py 我有:

from myapp.views.views import *
from myapp.views.rest import *

但问题并不特定于这些文件 - 如果我向 urls.py 添加另一个导入也失败,所以它就像根本找不到应用程序一样。

packages.config 我有:

packages:
yum:
postgresql-devel: []

python.config 中我有(试图加载 virtualenv,这可能不是必需的?)

container_commands:
00_activate:
command: "source /opt/python/run/venv/bin/activate"
01_make_admin_executable:
command: "chmod +x scripts/createadmin.py"
leader_only: true
02_make_executable:
command: "chmod +rx application.py"
leader_only: true
03_syncdb:
command: "python manage.py syncdb --noinput"
leader_only: true
04_collectstatic:
command: "python manage.py collectstatic --noinput"

option_settings:
- option_name: AWS_SECRET_KEY
value: mykey
- option_name: AWS_ACCESS_KEY_ID
value: myaccesskeyid
- option_name: application_stage
value: "staging"

很高兴列出其他有帮助的配置文件。它们确实包括设置位置,但没有具体引用 PYTHONPATH 等。

[aws:elasticbeanstalk:application:environment]
DJANGO_SETTINGS_MODULE=project.settings

我已经运行了 eb updategit aws.push

真的很纠结这个问题!我第一次尝试 AWS 部署,所以显然错过了一些重要的事情。如果有人知道我错过了什么,非常感谢您的帮助。

最佳答案

这原来是 mod_wsgi 与 Django 开发服务器的问题。 This post Graham Dumpleton 的著作对理解它非常有帮助(它不能略读)。

mod_wsgi 需要被告知我站点的位置。我的 WSGI 文件 (application.py) 现在看起来像这样,并且导入有效:

import os
import sys

sys.path.insert(0, '/opt/python/current/app')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

关于python - 无法在 AWS Elastic Beanstalk 上找到 Django 应用程序的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com