为我的django应用程序提交了一个小代码更改并部署到heroku。该应用程序现在会在每个响应中抛出H10(app crashed)错误。当我查看日志时,我看到了..
[web.1]: Traceback (most recent call last):
[web.1]: File "nightlife2/manage.py", line 2, in <module>
[web.1]: from django.core.management import execute_manager
[web.1]: ImportError: No module named django.core.management
[web.1]: bash: bin/gunicorn_django: No such file or directory
..我知道这意味着django不在python路径上。我查看了heroku配置中的PATH,其中显示了bin:/usr/local/bin:/usr/bin:/bin
。但在执行heroku run bash
时,我注意到整个bin
目录现已消失。我在heroku上部署的其他应用程序仍然可以推送到那里并且仍然有bin
目录(我相信较新的应用程序不再具有bin目录,而且它现在位于.heroku / venv / bin中。不是100%肯定那里的细节)
有没有人遇到过这个?我可以将PATH更改为.heroku/venv/bin
,但后来我得到一个关于sql的错误,我不知道这是否离根本问题更近或更远。非常感谢任何人,因为这是生产服务器并且目前正在使用。
编辑:更改路径时的错误是:django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3
。数据库是postgress所以我不确定它来自哪里
答案 0 :(得分:1)
我解决了这个问题。这是事情的组合。我会在这里记录下来,希望能帮助我解决我刚刚遇到的头痛问题。
我们的数据库刚刚更新为新的Heroku Postgres开发计划。 (不确定这是否相关)。这是自数据库更新以来第一次推送代码。
前段时间我记得听说不赞成设置注射。天真,我们没有做任何事情,从来没有看到任何变化,所以从来没有跟进它。他们决定今天生效并打破了与postgres数据库的链接。我仍然不确定为什么bin
目录现在已经消失,但似乎该应用现在正在使用新的.heroku/venv/bin
。为了解决所有这些问题,我不得不更改settings.py以使用数据库的新postgres声明。我在我的OP中是正确的,heroku config
中的PATH变量需要更新以指向.heroku/venv/bin
目录。然后我不得不更新Procfile,因为它抱怨找不到bin/gunicorn_django
。一切都更新后,推送代码解决了问题