问题
所以,我制作了一个网站,里面有多个自制的应用程序。我现在想使用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中尝试时,我会得到一个错误,即没有名为accounts的模块。当我评论账户以查看发生了什么时,它给了我一个错误,即没有名为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
如果有人能帮我,我会非常感激,因为我在这里失去了理智。提前谢谢。
将顶部文件夹重命名为其他文件夹。
然后更改
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')