Heroku не находит модуль, когда локальная версия - PullRequest
0 голосов
/ 09 февраля 2019

Проблема

Итак, я сделал сайт с несколькими домашними приложениями.Теперь я хочу развернуть этот сайт с помощью Heroku.Однако это не работает, поскольку я продолжаю получать сообщения об ошибках, связанных с тем, что Heroku не может найти приложения.

Когда я запускаю веб-сайт локально с

python manage.py runserver

, все ведет себя как ожидалось.

Когда я, однако, пытаюсь развернуть этот сайт с помощью Heroku, я получаю сообщение об ошибке (трассировка стека предоставлена ​​ниже).

Структура проекта

towima
|   .gitignore
|   Procfile
|   README.md
|   requirements.txt
|   runtime.txt
|   tree.txt
|   
+---media_cdn
|   |   .DS_Store
|   |   
|   \---products
|                       
\---towima
    |   .DS_Store
    |   db.sqlite3
    |   manage.py
    |   pharma_locations.json
    |   __init__.py
    |   
    +---accounts
    |   |   admin.py
    |   |   apps.py
    |   |   forms.py
    |   |   models.py
    |   |   tests.py
    |   |   urls.py
    |   |   views.py
    |   |   __init__.py
    |   |   
    |   +---migrations
    +---api
    |   |   admin.py
    |   |   apps.py
    |   |   models.py
    |   |   serializers.py
    |   |   tests.py
    |   |   urls.py
    |   |   views.py
    |   |   __init__.py
    |   |   
    |   +---migrations
    |           
    +---orders
    |   |   admin.py
    |   |   apps.py
    |   |   forms.py
    |   |   models.py
    |   |   tests.py
    |   |   urls.py
    |   |   views.py
    |   |   __init__.py
    |   |   
    |   +---migrations
    |           
    +---pharmacies
    |   |   admin.py
    |   |   apps.py
    |   |   forms.py
    |   |   models.py
    |   |   tests.py
    |   |   urls.py
    |   |   views.py
    |   |   __init__.py
    |   |   
    |   +---migrations
    |           
    +---products
    |   |   admin.py
    |   |   apps.py
    |   |   forms.py
    |   |   models.py
    |   |   tests.py
    |   |   urls.py
    |   |   views.py
    |   |   __init__.py
    |   |   
    |   +---migrations
    |           
    +---static
    |               
    +---staticfiles
    +---templates
    |           
    \---towima
        |   admin.py
        |   models.py
        |   settings.py
        |   urls.py
        |   views.py
        |   wsgi.py
        |   __init__.py

Мой Procfile

web: gunicorn towima.towima.wsgi --log-file -

Мой файл wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'towima.towima.settings')

application = get_wsgi_application()

ранее, os.environ.setdefault содержал «towima.settings», но я изменил его на то, что есть сейчас, потому что в противном случае он будетне найти нужную папку.

Соответствующий раздел файла settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accounts',         # The account app
    'towima',           # Our own app
    'products',         #products App
    'pharmacies',       #Pharmacy App
    'orders',           #Orders App
    'rest_framework',
    'crispy_forms',
    'api',
]

Проблема здесь, я думаю.Когда я запускаю веб-сайт локально, он находит все приложения, но когда я пробую его в Heroku, я получаю сообщение об ошибке, что не существует модуля с именем account.Когда я комментирую аккаунты, чтобы посмотреть, что произойдет, я обнаружил ошибку, что нет модуля с именем products.Это заставляет меня поверить, что это выглядит не в той папке, потому что нет ошибки для модуля towima.Когда я изменяю имя приложения с 'accounts' на 'towima.accounts', оно локально зависало и также не работает на Heroku.

Отслеживание стека

2019-02-09T19:37:45.956108+00:00 heroku[web.1]: Starting process with command `gunicorn towima.towima.wsgi --log-file -`
2019-02-09T19:37:47.980579+00:00 app[web.1]: [2019-02-09 19:37:47 +0000] [4] [INFO] Starting gunicorn 19.9.0
2019-02-09T19:37:47.981190+00:00 app[web.1]: [2019-02-09 19:37:47 +0000] [4] [INFO] Listening at: http://0.0.0.0:45237 (4)
2019-02-09T19:37:47.981279+00:00 app[web.1]: [2019-02-09 19:37:47 +0000] [4] [INFO] Using worker: sync
2019-02-09T19:37:47.986079+00:00 app[web.1]: [2019-02-09 19:37:47 +0000] [10] [INFO] Booting worker with pid: 10
2019-02-09T19:37:48.007337+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [11] [INFO] Booting worker with pid: 11
2019-02-09T19:37:48.242699+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [11] [ERROR] Exception in worker process
2019-02-09T19:37:48.242725+00:00 app[web.1]: Traceback (most recent call last):
2019-02-09T19:37:48.242727+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-02-09T19:37:48.242729+00:00 app[web.1]: worker.init_process()
2019-02-09T19:37:48.242730+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-02-09T19:37:48.242732+00:00 app[web.1]: self.load_wsgi()
2019-02-09T19:37:48.242733+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-02-09T19:37:48.242735+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2019-02-09T19:37:48.242737+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-02-09T19:37:48.242738+00:00 app[web.1]: self.callable = self.load()
2019-02-09T19:37:48.242740+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-02-09T19:37:48.242741+00:00 app[web.1]: return self.load_wsgiapp()
2019-02-09T19:37:48.242743+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-02-09T19:37:48.242744+00:00 app[web.1]: return util.import_app(self.app_uri)
2019-02-09T19:37:48.242746+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
2019-02-09T19:37:48.242747+00:00 app[web.1]: __import__(module)
2019-02-09T19:37:48.242749+00:00 app[web.1]: File "/app/towima/towima/wsgi.py", line 16, in <module>
2019-02-09T19:37:48.242750+00:00 app[web.1]: application = get_wsgi_application()
2019-02-09T19:37:48.242751+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2019-02-09T19:37:48.242753+00:00 app[web.1]: django.setup(set_prefix=False)
2019-02-09T19:37:48.242754+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
2019-02-09T19:37:48.242756+00:00 app[web.1]: apps.populate(settings.INSTALLED_APPS)
2019-02-09T19:37:48.242757+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/apps/registry.py", line 89, in populate
2019-02-09T19:37:48.242759+00:00 app[web.1]: app_config = AppConfig.create(entry)
2019-02-09T19:37:48.242760+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
2019-02-09T19:37:48.242761+00:00 app[web.1]: module = import_module(entry)
2019-02-09T19:37:48.242763+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/importlib/__init__.py", line 127, in import_module
2019-02-09T19:37:48.242764+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2019-02-09T19:37:48.242766+00:00 app[web.1]: ModuleNotFoundError: No module named 'accounts'
2019-02-09T19:37:48.242921+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [11] [INFO] Worker exiting (pid: 11)
2019-02-09T19:37:48.266614+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [10] [ERROR] Exception in worker process
2019-02-09T19:37:48.266619+00:00 app[web.1]: Traceback (most recent call last):
2019-02-09T19:37:48.266621+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2019-02-09T19:37:48.266623+00:00 app[web.1]: worker.init_process()
2019-02-09T19:37:48.266625+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 129, in init_process
2019-02-09T19:37:48.266627+00:00 app[web.1]: self.load_wsgi()
2019-02-09T19:37:48.266628+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
2019-02-09T19:37:48.266630+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2019-02-09T19:37:48.266632+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2019-02-09T19:37:48.266634+00:00 app[web.1]: self.callable = self.load()
2019-02-09T19:37:48.266635+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
2019-02-09T19:37:48.266637+00:00 app[web.1]: return self.load_wsgiapp()
2019-02-09T19:37:48.266639+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
2019-02-09T19:37:48.266640+00:00 app[web.1]: return util.import_app(self.app_uri)
2019-02-09T19:37:48.266642+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
2019-02-09T19:37:48.266644+00:00 app[web.1]: __import__(module)
2019-02-09T19:37:48.266646+00:00 app[web.1]: File "/app/towima/towima/wsgi.py", line 16, in <module>
2019-02-09T19:37:48.266648+00:00 app[web.1]: application = get_wsgi_application()
2019-02-09T19:37:48.266649+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
2019-02-09T19:37:48.266651+00:00 app[web.1]: django.setup(set_prefix=False)
2019-02-09T19:37:48.266653+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/__init__.py", line 24, in setup
2019-02-09T19:37:48.266654+00:00 app[web.1]: apps.populate(settings.INSTALLED_APPS)
2019-02-09T19:37:48.266656+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/apps/registry.py", line 89, in populate
2019-02-09T19:37:48.266657+00:00 app[web.1]: app_config = AppConfig.create(entry)
2019-02-09T19:37:48.266659+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/django/apps/config.py", line 90, in create
2019-02-09T19:37:48.266661+00:00 app[web.1]: module = import_module(entry)
2019-02-09T19:37:48.266662+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/importlib/__init__.py", line 127, in import_module
2019-02-09T19:37:48.266664+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2019-02-09T19:37:48.266666+00:00 app[web.1]: ModuleNotFoundError: No module named 'accounts'
2019-02-09T19:37:48.266819+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-02-09T19:37:48.401363+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [4] [INFO] Shutting down: Master
2019-02-09T19:37:48.401446+00:00 app[web.1]: [2019-02-09 19:37:48 +0000] [4] [INFO] Reason: Worker failed to boot.
2019-02-09T19:37:48.490323+00:00 heroku[web.1]: State changed from starting to crashed
2019-02-09T19:37:48.471230+00:00 heroku[web.1]: Process exited with status 3

Если кто-то может мне помочь,Я был бы так благодарен, потому что я схожу с ума здесь.Заранее спасибо.

1 Ответ

0 голосов
/ 10 февраля 2019

Переименуйте верхнюю папку на что-то другое.

И затем измените

web: gunicorn towima.towima.wsgi --log-file -

на

web: gunicorn towima.wsgi --log-file -

и

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'towima.towima.settings')

на

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'towima.settings')
...