【问题标题】:Django Heroku no module named 'my app name'Django Heroku 没有名为“我的应用程序名称”的模块
【发布时间】:2018-05-19 23:04:34
【问题描述】:

我正在尝试将我的第一个 Django 应用程序部署到 Heroku。我能够迁移数据库并创建一个超级用户,但现在我陷入了困境:

[2018-05-19 22:51:01 +0000] [4] [INFO] Listening at: http://0.0.0.0:31247 (4)

2018-05-19T22:51:01.283512+00:00 app[web.1]: [2018-05-19 22:51:01 +0000] [4] [INFO] Using worker: sync

2018-05-19T22:51:01.287214+00:00 app[web.1]: [2018-05-19 22:51:01 +0000] [8] [INFO] Booting worker with pid: 8

2018-05-19T22:51:01.292792+00:00 app[web.1]: [2018-05-19 22:51:01 +0000] [8] [ERROR] Exception in worker process

2018-05-19T22:51:01.292795+00:00 app[web.1]: Traceback (most recent call last):

2018-05-19T22:51:01.292796+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker

2018-05-19T22:51:01.292797+00:00 app[web.1]:     worker.init_process()

2018-05-19T22:51:01.292798+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process

2018-05-19T22:51:01.292800+00:00 app[web.1]:     self.load_wsgi()

2018-05-19T22:51:01.292801+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi

2018-05-19T22:51:01.292802+00:00 app[web.1]:     self.wsgi = self.app.wsgi()

2018-05-19T22:51:01.292803+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi

2018-05-19T22:51:01.292804+00:00 app[web.1]:     self.callable = self.load()

2018-05-19T22:51:01.292806+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load

2018-05-19T22:51:01.292807+00:00 app[web.1]:     return self.load_wsgiapp()

2018-05-19T22:51:01.292808+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp

2018-05-19T22:51:01.292809+00:00 app[web.1]:     return util.import_app(self.app_uri)

2018-05-19T22:51:01.292810+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app

2018-05-19T22:51:01.292811+00:00 app[web.1]:     __import__(module)

2018-05-19T22:51:01.292816+00:00 app[web.1]: ModuleNotFoundError: No module named 'whispering-shelf-25150'

2018-05-19T22:51:01.292905+00:00 app[web.1]: [2018-05-19 22:51:01 +0000] [8] [INFO] Worker exiting (pid: 8)

2018-05-19T22:51:01.329968+00:00 app[web.1]: [2018-05-19 22:51:01 +0000] [4] [INFO] Shutting down: Master

2018-05-19T22:51:01.330127+00:00 app[web.1]: [2018-05-19 22:51:01 +0000] [4] [INFO] Reason: Worker failed to boot.

2018-05-19T22:51:01.413026+00:00 heroku[web.1]: Process exited with status 3

2018-05-19T22:51:07.070132+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=whispering-shelf-25150.herokuapp.com request_id=4b10d0f1-939f-44b6-8ee0-b535cb07f8de fwd="185.5.121.201" dyno= connect= service= status=503 bytes= protocol=https

我使用一些教程开发了我的应用程序,这些教程在我的设置中使用了mysite。但是现在我的 Heroku 应用程序被命名为whispering-shelf-25150

这些名字之间有什么关系?例如,我是否应该将settings.py 中出现的mysite 更改为whispering-shelf-25150

在我的 wsgi 文件中,我有:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "whispering-shelf-25150.settings.settings")

【问题讨论】:

  • 你为什么要设置DJANGO_SETTINGS_MODULE? Heroku 可以在没有这个环境变量的情况下很好地运行 Django 应用程序。

标签: django heroku wsgi


【解决方案1】:

这些名字之间有什么关系?例如,我是否应该将settings.py 中出现的mysite 更改为whispering-shelf-25150

您的 Heroku 应用程序的名称无关紧要。它与您的 Python 模块名称之间没有关系。

设置模块的名称必须与项目文件夹中的内容匹配,顶级文件夹的名称无关紧要。

例如,如果你的目录树看起来像

  • project/ ← 忽略这个
    • mysite/ ← 包括这个
      • settings.py ← 包括这个
    • some_app/
      • ...

您的设置模块是mysite.settings

【讨论】:

  • 感谢@Chris 澄清这一点。我创建了额外的“设置”目录,所以在 wsgi 我得到了 mysite.settings.settings 对吗?但我仍然收到此错误:ModuleNotFoundError: No module named 'whispering-shelf-25150'
  • @Patr01, whispering-shelf-25150 不应出现在源代码中的任何位置。使用 grep 之类的东西来查找它的位置并摆脱它。
猜你喜欢
  • 2021-03-29
  • 2020-04-08
  • 2017-01-24
  • 2012-09-22
  • 2018-04-01
  • 2017-11-09
  • 2012-11-17
  • 2016-12-08
  • 2021-06-07
相关资源
最近更新 更多