Django На Heroku нет модуля с именем mysite.settings - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в Heroku и пытаюсь настроить проект Django с несколькими файлами настроек.Когда я запускаю / открываю приложение Django в режиме реального времени на Heroku, я получаю «ModuleNotFoundError: нет модуля с именем« mysite.settings ». Подвох в том, что у меня нет файла« mysite.settings »... просто каталог».

Локальный запуск проекта в Visual Studio работает нормально, и когда я выполняю сервер запуска без параметров на Heroku через Powershell, он также работает нормально, включая поиск правильного файла настроек. Он просто взрывается при попытке открытьэто с использованием 'heroku open'.

Моя структура каталогов выглядит следующим образом:

-mysite (main project sub-folder)
|
+- settings
    |
    +----- __init__
    +----- base
    +----- development (not imported to production site)
    +----- production
|
+- __init__
+- forms
+- models
+- urls
+- views

В течение последних двух дней я просматривал различные сообщения, и, похоже, ничего не работает.я пробовал, сообщение об ошибке, которое я получаю, относится к модулю mysite.settings, который я нигде не загружаю. Я загружаю только mysite.settings.production. Ошибка относится к каталогу, а не к файлу?

Список того, что я пробовал:

  1. Я установил для переменной env DJANGO_SETTINGS_MODULE значение "mysite.settings.production".

    heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production
    
  2. Я будуМы попытались установить для переменной env PYTHONPATH значение fakepath, как рекомендовано в одном билете heroku.

    heroku config:set PYTHONPATH=fakepath
    
  3. Я пытался использовать файлы инициализации для загрузки своих настроек.

    import os
    if os.environ.get('DJANGO_SETTINGS_MODULE', '') == 'mysite.settings.production'
        from .production import *
    else:
        from .development import *
    
  4. Я изменил оба файла manage.py и wsgi для использования "mysite.settings.production"

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.production")
    
  5. Я пытался настроитьсистемный путь в моем файле WSGI.

    path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
    if path not in sys.path:
        sys.path.append(path)
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.production")
    

Другие примечания:

  1. Для Heroku я переименовал свой файл wsgi в prod_wsgi иtraceback выглядит так, как будто запускается соответствующим образом.

  2. В файле settings.production мой WSGI_APPLICATION установлен на prod_wsgi.application, поскольку я переименовал файл wsgi.

  3. Я установил django_heroku и импортирую его в начало моего файла settings.production с инициализацией локальных настроек в качестве последней строки моего файла.

    import django_heroku  #(at top)
    django_heroku.settings(locals())  #(last line)
    

Журнал трекбэка

2019-02-19T10:40:22.181193+00:00 app[web.1]: [2019-02-19 10:40:22 +0000] [12] [ERROR] Exception in worker process
2019-02-19T10:40:22.181241+00:00 app[web.1]: Traceback (most recent call last):
2019-02-19T10:40:22.181243+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-02-19T10:40:22.181245+00:00 app[web.1]: worker.init_process()
2019-02-19T10:40:22.181247+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-02-19T10:40:22.181249+00:00 app[web.1]: self.load_wsgi()
2019-02-19T10:40:22.181251+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-02-19T10:40:22.181253+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2019-02-19T10:40:22.181255+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-02-19T10:40:22.181257+00:00 app[web.1]: self.callable = self.load()
2019-02-19T10:40:22.181259+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-02-19T10:40:22.181260+00:00 app[web.1]: return self.load_wsgiapp()
2019-02-19T10:40:22.181262+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-02-19T10:40:22.181264+00:00 app[web.1]: return util.import_app(self.app_uri)
2019-02-19T10:40:22.181266+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
2019-02-19T10:40:22.181268+00:00 app[web.1]: __import__(module)
2019-02-19T10:40:22.181270+00:00 app[web.1]: File 
"/app/mysite/prod_wsgi.py", line 29, in <module>
2019-02-19T10:40:22.181272+00:00 app[web.1]: application = get_wsgi_application()
2019-02-19T10:40:22.181273+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2019-02-19T10:40:22.181275+00:00 app[web.1]: django.setup(set_prefix=False)
2019-02-19T10:40:22.181277+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/__init__.py", line 19, in setup
2019-02-19T10:40:22.181279+00:00 app[web.1]: configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
2019-02-19T10:40:22.181281+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 57, in __getattr__
2019-02-19T10:40:22.181283+00:00 app[web.1]: self._setup(name)
2019-02-19T10:40:22.181285+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 44, in _setup
2019-02-19T10:40:22.181287+00:00 app[web.1]: self._wrapped = Settings(settings_module)
2019-02-19T10:40:22.181288+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 107, in __init__
2019-02-19T10:40:22.181290+00:00 app[web.1]: mod = importlib.import_module(self.SETTINGS_MODULE)
2019-02-19T10:40:22.181292+00:00 app[web.1]: File 
"/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
2019-02-19T10:40:22.181294+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2019-02-19T10:40:22.181315+00:00 app[web.1]: ModuleNotFoundError: No module named 'mysite.settings'

Любая помощь приветствуется.

ОБНОВЛЕНИЕ (21.02.19): После 50+ попыток Git решить эту проблему, я сдался и удалил свою учетную запись Heroku.Я добавил несколько дополнительных параметров отладки к своему заявлению об оружии в Procfile, но ничего не помогло.Pythonpath показывался как «None», и я не мог установить его, независимо от того, что я пробовал с sys.path в файле WSGI или с переменными среды в настройках моего сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...