【发布时间】:2014-04-16 06:18:15
【问题描述】:
这似乎是一个常见问题,但到目前为止,回复的答案都没有对我有用。
Django:1.6.2 Python:2.7.5
我正在尝试在 AWS Elastic beanstalk 上部署 Django 应用程序。 我目前的 Django 项目结构是-
requirements.txt
.ebextensions
|-myproject.config
myproject
|
|-init.py
|-manage.py
|-settings
|-init.py (all common settings param)
|-active.py (to select which of production or development settings to choose)
|-production.py
|-development.py
|-apps
|-polls
|-init.py
|-models.py
|-views.py
|-urls.py
|wsgi.py
我的wsgi.py文件如下-
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.active")
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.active'
from os.path import abspath, dirname, join
from site import addsitedir
ROOT = os.path.join(os.path.dirname(__file__), '..')
sys.path.insert(0, ROOT)
PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, PROJECT_ROOT)
sys.path.insert(0, abspath(join(PROJECT_ROOT, 'apps'))
sys.path.append('/opt/python/ondeck/app/myproject/')
sys.path.append('/opt/python/ondeck/app/myproject/apps')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
.ebextenstions/myproject.config 设置如下`
container_commands:
01_syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02_collectstatic:
command: "django-admin.py collectstatic --noinput"
option_settings:
- namespace: "aws:elasticbeanstalk:container:python"
option_name: WSGIPath
value: "myproject/wsgi.py"
- option_name: DJANGO_SETTINGS_MODULE
value: "settings.active"
- namespace: "aws:elasticbeanstalk:container:python:staticfiles"
option_name: "/static/"
value: "static/"
我还尝试将--settings=settings.active 参数传递给django-admin.py 以获得相同的错误。
DJANGO_SETTINGS_MODULE 环境变量设置为settings.module
这些命令适用于manage.py
问题是,如果从.ebextensions/myproject.config 文件中,我将container_command 给django-admin.py syncdb --noinput,我会收到以下错误-
2014-03-12 08:16:45,988 [错误] 命令 01_syncdb (django-admin.py syncdb --noinput) 失败 2014-03-12 08:16:45,989 [DEBUG] 命令 01_syncdb 输出:回溯(最近一次调用最后一次): ImportError:无法导入设置“settings.active”(是否打开 系统路径?设置文件中是否存在导入错误?):没有模块 命名为 settings.active
当我尝试在我的开发机器上进行本地操作时,我也遇到了同样的错误。但是,如果在我的开发机器上,我将PYTHONPATH 设置为与我在wsgi.py 文件中指定的相同,即,
PYTHONPATH=/path/to/myproject 然后命令在本地成功。但是,即使我在 wsgi.py 文件中设置了相同的路径,它在 beanstalk 上还是失败了。
那么有没有办法在不设置 PYTHONPATH 的情况下避免这个错误? 如果没有,我该如何为 AWS Elastic Beanstalk 设置它?
【问题讨论】:
-
你好。你找到解决方法了吗?谢谢
标签: python django amazon-web-services django-admin amazon-elastic-beanstalk