HerokuのCedar-14に、Python3.7系アプリをデプロイしたらエラーになった

昔作成したHerokuアプリのPythonが3.4系だったため、Python3.7系で動作するようにアプリを修正し、Herokuへデプロイしたところ、

$ git push heroku feature/migrate-to-django2:master
Enumerating objects: 171, done.
Counting objects: 100% (171/171), done.
Delta compression using up to 4 threads
Compressing objects: 100% (130/130), done.
Writing objects: 100% (148/148), 420.86 KiB | 2.36 MiB/s, done.
Total 148 (delta 59), reused 1 (delta 1)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Found python-3.4.3, removing
remote: -----> Installing python-3.7.2
remote: -----> Installing pip
remote: -----> Installing requirements with pip
remote:  !     Push rejected, failed to compile Python app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !   Push rejected to ringo-tabetter.
remote:
To https://git.heroku.com/ringo-tabetter.git
 ! [remote rejected] feature/migrate-to-django2 -> master (pre-receive hook declined)

とエラーになりました。

 
その時に対応した内容をメモします。

 

目次

 

環境

 

対応

heroku logs コマンドでログを見ましたが、特に有用な情報はありませんでした。

$ heroku logs
...
app[web.1]: [INFO] Worker exiting (pid: 8)
app[web.1]: [INFO] Worker exiting (pid: 9)
app[web.1]: [INFO] Handling signal: term
app[web.1]: [INFO] Shutting down: Master
app[api]: Build failed -- check your build output: https://dashboard.heroku.com/apps/xxx/activity/builds/xxx

 
check your build output のURLを確認しましたが、pushした時のログと同じで、手がかりにはなりませんでした。

 

そんな中、Herokuアプリの情報を見ていたところ、そのアプリはCedar-14を使っていました。また、 upgrade のリンクもありました。

Herokuのヘルプを見たところ、Cedar-14はUbuntu14.04ベースであり、deprecatedになっていました。
Stacks | Heroku Dev Center

もしかしたら、deprecatedな環境だとPython3.7系は用意されていないのかもしれないと思い、Stackをアップグレードすることにしました。

 
そこで、Dashboardにて upgrade をクリックしたところ、表示が

Stack heroku-18 will replace cedar-14 on the next deploy

に変わりました。

 
次に、再度同じブランチをpushしたところ、問題なく完了しました。

$ git push heroku feature/migrate-to-django2:master
...
remote: Verifying deploy... done.
To https://git.heroku.com/ringo-tabetter.git

 
古いStackを使っていたのがダメだったようです。

ただ、公式ドキュメントによると、Cedar-14でPython3.7.2は使えるようです。何かのタイミングでしょうか... https://devcenter.heroku.com/articles/python-support#supported-runtimes