编程语言
首页 > 编程语言> > python-ImportError:无法在AWS Elastic Beanstalk上导入设置(在> sys.path上吗?设置文件中有导入错误吗?)

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