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

Python 由于找不到settings.py,我的Django站点未加载到Elasticbeanstalk中,python,django,amazon-elastic-beanstalk,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] Fil

我无法加载我的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\u site/ecs\u 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\u 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
文件(仅供参考):

下面是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)

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

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

此外,请确保变量名为
PYTHONPATH
,而不是
PYTHON\u PATH
,即使
settings.py
文件位于
ecs\u site\ecs\u site
目录中?是,因为设置的限定名称是
ecs\u site.settings
,这意味着PYTHONPATH应该指向包含
ecs\u站点
包的目录,而不是
ecs\u站点
包本身。我刚刚注意到,您已经将环境变量
PYTHONPATH
命名为
PATH(无下划线)。我在答案上加了一条,谢谢。我在这件事上迷失了一段时间。我很感激你看到我的打字错误,而不是让我觉得自己是个白痴。
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)
PYTHONPATH: "/opt/python/current/ecs_site:$PYTHONPATH"