python-ImportError:无法在AWS Elastic Beanstalk上导入设置(在> sys.path上吗?设置文件中有导入错误吗?)
作者:互联网
这似乎是一个普遍的问题,但是到目前为止,对我的答复仍然没有答案对我有用.
的Django:1.6.2
的Python:2.7.5
我正在尝试在AWS Elastic beantalk上部署Django应用程序.
我当前的Django项目结构是-
requirements.txt
.ebextensions
| -myproject.config
我的项目
|
| -init.py
| -manage.py
|-设置
| -init.py(所有常用设置参数)
| -active.py(选择要选择的生产或开发设置)
| -production.py
| -development.py
|-应用
|-民意调查
| -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文件中,我给django-admin.py syncdb –noinput一个container_command,则会出现以下错误-
2014-03-12 08:16:45,988 [ERROR] Command 01_syncdb (django-admin.py
syncdb –noinput) failed 2014-03-12 08:16:45,989 [DEBUG] Command
01_syncdb output: Traceback (most recent call last):
ImportError: Could not import settings ‘settings.active’ (Is it on
sys.path? Is there an import error in the settings file?): No module
named settings.active
当我尝试在开发机器上本地执行此操作时,也会遇到相同的错误.但是,如果在开发机器上,我将PYTHONPATH设置为与wsgi.py文件中指定的相同,即,
PYTHONPATH = / path / to / myproject,然后命令在本地成功执行.但是,尽管我在wsgi.py文件中设置了相同的路径,但是在beantalk上它却失败了.
那么有没有一种方法可以避免这种错误而无需设置PYTHONPATH?
如果没有,我如何为AWS Elastic Beanstalk设置它?
解决方法:
我通过在wsgi.py本身的sys.path中添加项目路径来修复它.也许您可以尝试这样做.
标签:amazon-web-services,elastic-beanstalk,django-admin,python,django 来源: https://codeday.me/bug/20191029/1962615.html