Я новичок в 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. Ошибка относится к каталогу, а не к файлу?
Список того, что я пробовал:
Я установил для переменной env DJANGO_SETTINGS_MODULE значение "mysite.settings.production".
heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production
Я будуМы попытались установить для переменной env PYTHONPATH значение fakepath, как рекомендовано в одном билете heroku.
heroku config:set PYTHONPATH=fakepath
Я пытался использовать файлы инициализации для загрузки своих настроек.
import os
if os.environ.get('DJANGO_SETTINGS_MODULE', '') == 'mysite.settings.production'
from .production import *
else:
from .development import *
Я изменил оба файла manage.py и wsgi для использования "mysite.settings.production"
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings.production")
Я пытался настроитьсистемный путь в моем файле 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")
Другие примечания:
Для Heroku я переименовал свой файл wsgi в prod_wsgi иtraceback выглядит так, как будто запускается соответствующим образом.
В файле settings.production мой WSGI_APPLICATION установлен на prod_wsgi.application, поскольку я переименовал файл wsgi.
Я установил 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 или с переменными среды в настройках моего сервера.