由于找不到settings.py,我的Django站点未加载到Elasticbeanstalk中。

时间:2019-01-08 00:29:41

标签: python django amazon-elastic-beanstalk

我无法加载Django网站。这些是我从日志中得到的错误消息:

get_wsgi_application
[Mon Jan 07 23:38:51.699497 2019] [:error] [pid 6456] [remote 74.71.99.135:244]     django.setup(set_prefix=False)
[Mon Jan 07 23:38:51.699503 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/__init__.py", line 22, in setup
[Mon Jan 07 23:38:51.699507 2019] [:error] [pid 6456] [remote 74.71.99.135:244]     configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
[Mon Jan 07 23:38:51.699512 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/conf/__init__.py", line 56, in __getattr__
[Mon Jan 07 23:38:51.699515 2019] [:error] [pid 6456] [remote 74.71.99.135:244]     self._setup(name)
[Mon Jan 07 23:38:51.699520 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/conf/__init__.py", line 41, in _setup
[Mon Jan 07 23:38:51.699523 2019] [:error] [pid 6456] [remote 74.71.99.135:244]     self._wrapped = Settings(settings_module)
[Mon Jan 07 23:38:51.699528 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "/opt/python/run/venv/local/lib/python3.6/site-packages/django/conf/__init__.py", line 110, in __init__
[Mon Jan 07 23:38:51.699530 2019] [:error] [pid 6456] [remote 74.71.99.135:244]     mod = importlib.import_module(self.SETTINGS_MODULE)
[Mon Jan 07 23:38:51.699535 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "/opt/python/run/venv/lib64/python3.6/importlib/__init__.py", line 126, in import_module
[Mon Jan 07 23:38:51.699538 2019] [:error] [pid 6456] [remote 74.71.99.135:244]     return _bootstrap._gcd_import(name[level:], package, level)
[Mon Jan 07 23:38:51.699543 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "<frozen importlib._bootstrap>", line 994, in _gcd_import
[Mon Jan 07 23:38:51.699548 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "<frozen importlib._bootstrap>", line 971, in _find_and_load
[Mon Jan 07 23:38:51.699553 2019] [:error] [pid 6456] [remote 74.71.99.135:244]   File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
[Mon Jan 07 23:38:51.699567 2019] [:error] [pid 6456] [remote 74.71.99.135:244] ModuleNotFoundError: No module named 'ecs_site.settings'

这是顶级目录(ecs_site)的目录结构:

total 272
-rw-r--r--   1 chauncey  staff    97B Jan  6 21:02 requirements.txt
drwxr-xr-x  14 chauncey  staff   476B Jan  4 18:11 pages
-rwxr-xr-x   1 chauncey  staff   806B Mar 22  2018 manage.py
drwxr-xr-x  10 chauncey  staff   340B Jan  4 18:05 ecs_site
-rw-r--r--   1 chauncey  staff   128K Mar 22  2018 db.sqlite3

这是/ecs_site/ecs_site目录的目录结构:

total 24
-rw-r--r--  1 chauncey  staff   394B Jan  7 18:07 wsgi.py
-rw-r--r--  1 chauncey  staff   812B Mar 22  2018 urls.py
drwxr-xr-x  3 chauncey  staff   102B Mar 23  2018 templates
drwxr-xr-x  2 chauncey  staff    68B Mar 23  2018 static
-rw-r--r--  1 chauncey  staff   3.6K Jan  6 21:09 settings.py
drwxr-xr-x  6 chauncey  staff   204B Jan  1 20:43 __pycache__
-rw-r--r--  1 chauncey  staff     0B Mar 22  2018 __init__.py

这是./ecs_site/pages目录的目录结构:

total 56

-rw-r--r--  1 chauncey  staff   7.1K Jan  4 19:53 views.py
-rw-r--r--  1 chauncey  staff   153B Jan  4 18:45 urls.py
-rw-r--r--  1 chauncey  staff    60B Mar 22  2018 tests.py
drwxr-xr-x  5 chauncey  staff   170B Apr 14  2018 templatetags
drwxr-xr-x  4 chauncey  staff   136B Apr  3  2018 templates
-rw-r--r--  1 chauncey  staff    57B Mar 22  2018 models.py
drwxr-xr-x  4 chauncey  staff   136B Mar 22  2018 migrations
-rw-r--r--  1 chauncey  staff    85B Mar 22  2018 apps.py
-rw-r--r--  1 chauncey  staff    63B Mar 22  2018 admin.py
drwxr-xr-x  8 chauncey  staff   272B Jan  4 19:53 __pycache__
-rw-r--r--  1 chauncey  staff     0B Mar 22  2018 __init__.py

这是/.ebextensions/django.config文件:

option_settings:
 "aws:elasticbeanstalk:application:environment":
     DJANGO_SETTING_MODULE: "ecs_site.settings"
     PYTHON_PATH: "/opt/python/current/ecs_site/ecs_site:$PYTHONPATH"
 "aws:elasticbeanstalk:container:python":
     WSGIPath: "ecs_site/ecs_site/wsgi.py"

这是我的wsgi.py文件(仅供参考):

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ecs_site.settings")

application = get_wsgi_application()

这是manage.py:

import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ecs_site.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您的PYTHONPATH文件中的django.config设置似乎太深了。第二级ecs_site目录是一个包,因此PYTHONPATH应该指向上面的目录,以便可以解析ecs_site.settings模块:

PYTHONPATH: "/opt/python/current/ecs_site:$PYTHONPATH"

还要确保变量名为PYTHONPATH,而不是PYTHON_PATH