Python Heroku Django应用程序未提供服务,由于ModuleNotFoundError而崩溃:<;应用程序>;(*不是需求模块*)?
因此,我有一个已经存在的Django项目(称为“MLshowcase”),我在过去几个月里建立了这个项目。我第一次尝试部署到Heroku,已经完成了所有步骤并添加了我认为需要的所有文件。在大约50次失败(需求太大)之后,我终于得到了要部署的项目!注意:为了部署,我必须在heroku上禁用collectstatic,否则它会一直说我的一个静态文件“不在根‘static’中”。但它确实部署了 然而,转到应用程序(在heroku上称为‘iansworld’)只会显示“应用程序错误,无法提供页面”。我已经摆弄了一天的设置和wsgi,但仍然一无所获。当我查看Herko日志时,它显示为build-crash-build-crash..等等,其中一些日志说:Python Heroku Django应用程序未提供服务,由于ModuleNotFoundError而崩溃:<;应用程序>;(*不是需求模块*)?,python,django,heroku,Python,Django,Heroku,因此,我有一个已经存在的Django项目(称为“MLshowcase”),我在过去几个月里建立了这个项目。我第一次尝试部署到Heroku,已经完成了所有步骤并添加了我认为需要的所有文件。在大约50次失败(需求太大)之后,我终于得到了要部署的项目!注意:为了部署,我必须在heroku上禁用collectstatic,否则它会一直说我的一个静态文件“不在根‘static’中”。但它确实部署了 然而,转到应用程序(在heroku上称为‘iansworld’)只会显示“应用程序错误,无法提供页面”。我已
app[web.1]: ModuleNotFoundError: No module named 'iansworld'
完整github:
程序文件
web: gunicorn iansworld.wsgi --log-file -
requirements.txt
conda==4.3.16
conda-build==2.1.5
decorator==4.4.1
django==3.0.3
django-heroku
djangorestframework==3.9.3
django-crispy-forms==1.9.1
dj_database_url
django-adminlte-3==0.1.6
gunicorn
html5lib==1.0.1
joblib==0.14.1
json5==0.9.1
jsonschema==3.2.0
matplotlib==3.1.3
numpy==1.18.1
packaging==19.1
pandas==1.0.1
path==13.1.0
requests==2.22.0
scikit-learn==0.22.1
scipy==1.4.1
seaborn==0.10.0
tables==3.6.1
whitenoise
设置.py
import os
import dj_database_url
import django_heroku
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,"templates")
STATIC_DIR = os.path.join(BASE_DIR,"static")
STATIC_ROOT = os.path.join(BASE_DIR,"staticfiles")
STATIC_URL = "/static/"
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "xxx")
# SECURITY WARNING: don"t run with debug turned on in production!
DEBUG = os.environ.get("DJANGO_DEBUG", "") != "False"
ALLOWED_HOSTS = ["iansword.herokuapp.com", "localhost", "127.0.0.1"]
# Application definition
INSTALLED_APPS = [
"whitenoise.runserver_nostatic",
"adminlte3",
"adminlte3_theme",
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"titanic",
"rest_framework",
"crispy_forms",
"skills",
]
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware",
"whitenoise.storage.CompressedManifestStaticFilesStorage",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]
ROOT_URLCONF = "mlshowcase.urls"
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [TEMPLATE_DIR,],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
],
},
},
]
WSGI_APPLICATION = "mlshowcase.wsgi.application"
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, "db.sqlite3"),
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES["default"].update(db_from_env)
# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
},
{
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
},
{
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
},
{
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
},
]
# Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/
LANGUAGE_CODE = "en-us"
TIME_ZONE = "UTC"
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
#LOGIN_REDIRECT_URL = "/"
REST_FRAMEWORK = {
"DEFAULT_PARSER_CLASSES": (
"rest_framework.parsers.JSONParser",
"rest_framework.parsers.FormParser",
)
}
CRISPY_TEMPLATE_PACK = "bootstrap4"
我在本地收集static,因此在根目录中有“static”和“staticfiles”。在成功部署之前,我能够在当地服役。那一定是配置问题吧
这是heroku日志--尾部:
20-05-20T00:39:53.000000+00:00应用程序[api]:由用户XX启动生成
2020-05-20T00:42:25.148602+00:00应用程序[api]:由用户XX创建的版本v14
2020-05-20T00:42:25.148602+00:00应用程序[api]:由用户XX部署5c85f4db
2020-05-20T00:42:26.539576+00:00 heroku[web.1]:状态从崩溃变为启动
2020-05-20T00:42:50.929018+00:00 heroku[web.1]:状态从开始更改为崩溃
2020-05-20T00:42:50.701801+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][4][INFO]启动gunicorn 20.0.4
2020-05-20T00:42:50.702751+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][4][INFO]收听:http://0.0.0.0:29801 (4)
2020-05-20T00:42:50.703003+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][4][INFO]使用辅助程序:同步
2020-05-20T00:42:50.711275+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][10][INFO]带pid的引导工作程序:10
2020-05-20T00:42:50.718832+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][10][错误]工作进程中出现异常
2020-05-20T00:42:50.718834+00:00应用程序[web.1]:回溯(最近一次通话):
2020-05-20T00:42:50.718834+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/arbiter.py”,第583行,在spawn_worker中
2020-05-20T00:42:50.718835+00:00应用程序[web.1]:worker.init_进程()
2020-05-20T00:42:50.718835+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/workers/base.py”,第119行,在初始化过程中
2020-05-20T00:42:50.718836+00:00应用程序[web.1]:自加载
2020-05-20T00:42:50.718836+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/workers/base.py”,第144行,在load\u wsgi中
2020-05-20T00:42:50.718836+00:00应用程序[web.1]:self.wsgi=self.app.wsgi()
2020-05-20T00:42:50.718837+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/app/base.py”,wsgi第67行
2020-05-20T00:42:50.718837+00:00应用程序[web.1]:self.callable=self.load()
2020-05-20T00:42:50.718838+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第49行,已加载
2020-05-20T00:42:50.718838+00:00应用程序[web.1]:返回自加载
2020-05-20T00:42:50.718839+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第39行,在load_wsgiapp中
2020-05-20T00:42:50.718839+00:00应用程序[web.1]:返回util.import\u应用程序(self.app\u uri)
2020-05-20T00:42:50.718839+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/site packages/gunicorn/util.py”,第358行,在导入应用程序中
2020-05-20T00:42:50.718840+00:00应用程序[网站1]:mod=importlib.import\u模块(模块)
2020-05-20T00:42:50.718840+00:00应用程序[web.1]:文件“/app/.heroku/python/lib/python3.7/importlib/\uuuu init\uuuuu.py”,第127行,在导入模块中
2020-05-20T00:42:50.718841+00:00应用程序[web.1]:返回引导程序。导入gcd(名称[级别:],包,级别)
2020-05-20T00:42:50.718841+00:00应用程序[web.1]:文件“”,第1006行,在导入中
2020-05-20T00:42:50.718842+00:00应用程序[web.1]:文件“”,第983行,在“查找”和“加载”中
2020-05-20T00:42:50.718842+00:00应用程序[web.1]:文件“”,第953行,在“查找”和“加载”中解锁
2020-05-20T00:42:50.718842+00:00应用程序[web.1]:文件“”,第219行,在“调用”中删除“帧”
2020-05-20T00:42:50.718843+00:00应用程序[web.1]:文件“”,第1006行,在导入中
2020-05-20T00:42:50.718843+00:00应用程序[web.1]:文件“”,第983行,在“查找”和“加载”中
2020-05-20T00:42:50.718844+00:00应用程序[web.1]:文件“”,第965行,在“查找”和“加载”中解锁
2020-05-20T00:42:50.718844+00:00应用程序[web.1]:ModuleNotFoundError:没有名为“iansworld”的模块
2020-05-20T00:42:50.719216+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][10][INFO]工人退出(pid:10)
2020-05-20T00:42:50.765012+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][4][INFO]正在关闭:主
2020-05-20T00:42:50.765168+00:00应用程序[web.1]:[2020-05-20 00:42:50+0000][4][INFO]原因:工作程序无法启动。
2020-05-20T00:42:58.000000+00:00应用程序[api]:构建成功
2020-05-20T00:45:00.448059+00:00 heroku[web.1]:状态从崩溃变为启动
2020-05-20T00:45:32.080224+00:00 heroku[web.1]:状态从开始更改为崩溃
2020-05-20T00:45:31.890218+00:00应用程序[web.1]:[2020-05-20 00:45:31+0000][4][INFO]启动gunicorn 20.0.4
2020-05-20T00:45:31.891181+00:00应用程序[web.1]:[2020-05-20 00:45:31+0000][4][INFO]收听地址:http://0.0.0.0:18844 (4)
2020-05-20T00:45:31.891401+00:00应用程序[web.1]:[2020-05-20 00:45:31+0000][4][INFO]使用辅助程序:同步
2020-05-20T00:45:31.897725+00:00应用程序[web.1]:[2020-05-20 00:45:31+0000][10][INFO]带pid的引导工作程序:10
2020-05-20T00:45:31.906592+00:00应用程序[web.1]:[2020-05-20 00:45:31+0000][10][错误]工作进程中出现异常
2020-05-20T00:45:31.906594+00:00应用程序[web.1]:回溯(最近一次通话):
2020-05-20T00:45:31.906608+00:00应用程序[web.1]:文件“/app/.heroku
20-05-20T00:39:53.000000+00:00 app[api]: Build started by user XX
2020-05-20T00:42:25.148602+00:00 app[api]: Release v14 created by user XX
2020-05-20T00:42:25.148602+00:00 app[api]: Deploy 5c85f4db by user XX
2020-05-20T00:42:26.539576+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-20T00:42:50.929018+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-20T00:42:50.701801+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [4] [INFO] Starting gunicorn 20.0.4
2020-05-20T00:42:50.702751+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [4] [INFO] Listening at: http://0.0.0.0:29801 (4)
2020-05-20T00:42:50.703003+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [4] [INFO] Using worker: sync
2020-05-20T00:42:50.711275+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [10] [INFO] Booting worker with pid: 10
2020-05-20T00:42:50.718832+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [10] [ERROR] Exception in worker process
2020-05-20T00:42:50.718834+00:00 app[web.1]: Traceback (most recent call last):
2020-05-20T00:42:50.718834+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-05-20T00:42:50.718835+00:00 app[web.1]: worker.init_process()
2020-05-20T00:42:50.718835+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-05-20T00:42:50.718836+00:00 app[web.1]: self.load_wsgi()
2020-05-20T00:42:50.718836+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-05-20T00:42:50.718836+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-05-20T00:42:50.718837+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-05-20T00:42:50.718837+00:00 app[web.1]: self.callable = self.load()
2020-05-20T00:42:50.718838+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-05-20T00:42:50.718838+00:00 app[web.1]: return self.load_wsgiapp()
2020-05-20T00:42:50.718839+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-05-20T00:42:50.718839+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-05-20T00:42:50.718839+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app
2020-05-20T00:42:50.718840+00:00 app[web.1]: mod = importlib.import_module(module)
2020-05-20T00:42:50.718840+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/importlib/__init__.py", line 127, in import_module
2020-05-20T00:42:50.718841+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-05-20T00:42:50.718841+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
2020-05-20T00:42:50.718842+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
2020-05-20T00:42:50.718842+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
2020-05-20T00:42:50.718842+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-05-20T00:42:50.718843+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
2020-05-20T00:42:50.718843+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
2020-05-20T00:42:50.718844+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
2020-05-20T00:42:50.718844+00:00 app[web.1]: ModuleNotFoundError: No module named 'iansworld'
2020-05-20T00:42:50.719216+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [10] [INFO] Worker exiting (pid: 10)
2020-05-20T00:42:50.765012+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [4] [INFO] Shutting down: Master
2020-05-20T00:42:50.765168+00:00 app[web.1]: [2020-05-20 00:42:50 +0000] [4] [INFO] Reason: Worker failed to boot.
2020-05-20T00:42:58.000000+00:00 app[api]: Build succeeded
2020-05-20T00:45:00.448059+00:00 heroku[web.1]: State changed from crashed to starting
2020-05-20T00:45:32.080224+00:00 heroku[web.1]: State changed from starting to crashed
2020-05-20T00:45:31.890218+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [4] [INFO] Starting gunicorn 20.0.4
2020-05-20T00:45:31.891181+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [4] [INFO] Listening at: http://0.0.0.0:18844 (4)
2020-05-20T00:45:31.891401+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [4] [INFO] Using worker: sync
2020-05-20T00:45:31.897725+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [10] [INFO] Booting worker with pid: 10
2020-05-20T00:45:31.906592+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [10] [ERROR] Exception in worker process
2020-05-20T00:45:31.906594+00:00 app[web.1]: Traceback (most recent call last):
2020-05-20T00:45:31.906608+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
2020-05-20T00:45:31.906610+00:00 app[web.1]: worker.init_process()
2020-05-20T00:45:31.906610+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process
2020-05-20T00:45:31.906610+00:00 app[web.1]: self.load_wsgi()
2020-05-20T00:45:31.906611+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
2020-05-20T00:45:31.906611+00:00 app[web.1]: self.wsgi = self.app.wsgi()
2020-05-20T00:45:31.906612+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
2020-05-20T00:45:31.906612+00:00 app[web.1]: self.callable = self.load()
2020-05-20T00:45:31.906612+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
2020-05-20T00:45:31.906613+00:00 app[web.1]: return self.load_wsgiapp()
2020-05-20T00:45:31.906613+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
2020-05-20T00:45:31.906614+00:00 app[web.1]: return util.import_app(self.app_uri)
2020-05-20T00:45:31.906614+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app
2020-05-20T00:45:31.906614+00:00 app[web.1]: mod = importlib.import_module(module)
2020-05-20T00:45:31.906615+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.7/importlib/__init__.py", line 127, in import_module
2020-05-20T00:45:31.906615+00:00 app[web.1]: return _bootstrap._gcd_import(name[level:], package, level)
2020-05-20T00:45:31.906616+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
2020-05-20T00:45:31.906616+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
2020-05-20T00:45:31.906617+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
2020-05-20T00:45:31.906617+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2020-05-20T00:45:31.906617+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
2020-05-20T00:45:31.906618+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
2020-05-20T00:45:31.906618+00:00 app[web.1]: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
2020-05-20T00:45:31.906618+00:00 app[web.1]: ModuleNotFoundError: No module named 'iansworld'
2020-05-20T00:45:31.906935+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [10] [INFO] Worker exiting (pid: 10)
2020-05-20T00:45:31.950987+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [4] [INFO] Shutting down: Master
2020-05-20T00:45:31.951221+00:00 app[web.1]: [2020-05-20 00:45:31 +0000] [4] [INFO] Reason: Worker failed to boot.
2020-05-20T00:45:41.382497+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=iansworld.herokuapp.com request_id=c5196195-eeea-4cd4-a142-665a7f0e7bc0 fwd="193.176.211.52" dyno= connect= service= status=503 bytes= protocol=https