前提・実現したいこと
Djangoで開発をしているのですが、HerokuにPushしても、Application errorになってしまいます。
heroku logs --tailでログを確認すると、以下のエラーメッセージが表示しました。
発生している問題・エラーメッセージ
エラーメッセージ 2022-03-04T01:14:09.434393+00:00 app[web.1]: ModuleNotFoundError: No module named 'musicsearch.wsgi'
ディレクトリ構成
musicsearch ├ app ├ musicsearch ├─__pycache__ ├─__init__.py ├─wsgi.py ├─settings.py ├─local_settings.py ├─urls.py ├ myvenv ├ manage.py ├db.splite3 ├Procfile ├requirements.txt ├requirements-dev.txt ├runtime,txt
wsgi.py
1import os 2 3from django.core.wsgi import get_wsgi_application 4 5os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'musicsearch.settings') 6 7application = get_wsgi_application()
setting.py
1import os 2from decouple import config 3from dj_database_url import parse as aburl 4import dj_database_url 5 6 7 8# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 9BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 10 11 12# Quick-start development settings - unsuitable for production 13# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ 14 15 16 17# SECURITY WARNING: don't run with debug turned on in production! 18DEBUG = False 19 20 21try: 22 from musicsearch.local_settings import * 23except ImportError: 24 pass 25 26if not DEBUG: 27 import django_heroku 28 django_heroku.settings(locals()) 29 30 31ALLOWED_HOSTS = ['*'] 32# musicsearch0303.herokuapp.com 33 34if not DEBUG: 35 SECRET_KEY = os.environ['SECRET_KEY'] 36# Application definition 37 38INSTALLED_APPS = [ 39 'django.contrib.admin', 40 'django.contrib.auth', 41 'django.contrib.contenttypes', 42 'django.contrib.sessions', 43 'django.contrib.messages', 44 'django.contrib.staticfiles', 45 'app', 46 'widget_tweaks', 47] 48 49MIDDLEWARE = [ 50 'django.middleware.security.SecurityMiddleware', 51 'django.contrib.sessions.middleware.SessionMiddleware', 52 'django.middleware.common.CommonMiddleware', 53 'django.middleware.csrf.CsrfViewMiddleware', 54 'django.contrib.auth.middleware.AuthenticationMiddleware', 55 'django.contrib.messages.middleware.MessageMiddleware', 56 'django.middleware.clickjacking.XFrameOptionsMiddleware', 57] 58 59ROOT_URLCONF = 'musicsearch.urls' 60 61TEMPLATES = [ 62 { 63 'BACKEND': 'django.template.backends.django.DjangoTemplates', 64 'DIRS': [BASE_DIR,'templates'], 65 'APP_DIRS': True, 66 'OPTIONS': { 67 'context_processors': [ 68 'django.template.context_processors.debug', 69 'django.template.context_processors.request', 70 'django.contrib.auth.context_processors.auth', 71 'django.contrib.messages.context_processors.messages', 72 ], 73 }, 74 }, 75] 76 77WSGI_APPLICATION = 'musicsearch.wsgi.application' 78 79 80# Database 81# https://docs.djangoproject.com/en/2.2/ref/settings/#databases 82 83DATABASES = { 84 'default': { 85 'ENGINE': 'django.db.backends.sqlite3', 86 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 87 } 88} 89 90db_from_env = dj_database_url.config() 91DATABASES['default'].update(db_from_env) 92 93# Password validation 94# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators 95 96AUTH_PASSWORD_VALIDATORS = [ 97 { 98 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 99 }, 100 { 101 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 102 }, 103 { 104 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 105 }, 106 { 107 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 108 }, 109] 110 111 112# Internationalization 113# https://docs.djangoproject.com/en/2.2/topics/i18n/ 114 115LANGUAGE_CODE = 'ja' 116 117TIME_ZONE = 'UTC' 118 119USE_I18N = True 120 121USE_L10N = True 122 123USE_TZ = True 124 125 126# Static files (CSS, JavaScript, Images) 127# https://docs.djangoproject.com/en/2.2/howto/static-files/ 128 129#CSS 130STATIC_URL = '/static/' 131STATIC_DIR = os.path.join(BASE_DIR,"static") 132# TATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles'), 133 134# STATICFILES_DIRS = [ 135# os.path.join(BASE_DIR,'static'), 136# ] 137# 画像 138MEDIA_DIR = os.path.join(BASE_DIR, "media") 139MEDIA_ROOT = MEDIA_DIR 140 141#パスワードリセットのメール送信 142EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 143 144#ログインログアウト 145LOGIN_URL = 'app:login' 146LOGIN_REDIRECT_URL = 'app:index' 147LOGOUT_REDIRECT_URL = 'app:login' 148LOGOUT_REDIRECT_URL='/login' 149LOGOUT_URL = 'app:logout' 150
Procfile
1web: gunicorn musicsearch.wsgi --log-file -
requirements.txt
1asgiref==3.5.0 2Django==4.0.3 3sqlparse==0.4.2 4-r requirementsdev.txt 5gunicorn==19.9.0 6psycopg2
runtime.txt
1 Python-3.10.0
requirementsdev.txt
1django-allauth==0.48.0 2django-widget-tweaks==1.4.12 3dj-database-url==0.5.0 4dj-static==0.0.6 5python-decouple==3.3 6spotipy==2.19.0 7oauthlib==3.2.0 8requests==2.27.1 9requests-oauthlib==1.3.1 10python3-openid==3.2.0 11django-heroku==0.3.1
試したこと
Procfileがうまく実行されていないと思い、Procfileの位置やディレクトリ構成などパスの変更を色々と試したが、できなかった。
補足情報
ローカル環境で、gunicorn musicsearch.wsgiと実行すると、普通に表示されます。
解決方法を教えて頂きたいです。
文章が拙く、すみません。
質問内容に不備がある場合は補足させていただきますので、その際はコメントして頂くと幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。