HerokuがPythonのランタイム指定ファイルruntime.txtを非推奨(deprecated)にし、.python-versionに移行する件についてまとめました。
Herokuユーザーの皆さん、こんにちは!
突然ですが、あなたのリポジトリに「runtime.txt」は含まれていませんか?
先日、Herokuがruntime.txtをランタイム指定方法として非推奨(deprecated)にしましたので、詳細をご紹介します。
そもそも、runtime.txtって何よ?
Heroku上でPythonアプリケーションを作成する場合、Pythonのバージョンは最新バージョンパッチが自動設定されます。
一方で、ライブラリのバージョン依存性の観点より、Pythonバージョンを固定したい場合があります。
そこで、従来のHeroku環境では「runtime.txt」をルートディレクトリに配置し、ここにPythonランタイム(バージョン)を指定することができました。
python-3.8.10
どうすれば良いの?
2024年10月より、Herokuでは「.python-versionファイル」によるランタイム指定の対応を開始しました。
リポジトリのルートディレクトリに.python-versionを配置し、そこに次の形式でPythonランタイムを指定できます。
3.13
バージョンの数字だけで問題ありません。(超簡単)
バージョンパッチまで指定することもできます。
3.13.2
なお、Herokuはメジャーバージョンでの指定を推奨しています。
セキュリティー更新が自動実行されますし、推奨するのも納得。
参照:
放置するとどうなるの?
runtime.txtは執筆時点で非推奨とされ、現在も使用できますが将来的に削除される可能性があります。
削除後は最新のPythonバージョンが充てられることになりますので(多分)、ライブラリの整合性エラーに注意が必要です。
特に、requirements.txtにライブラリバージョンを指定していると、整合性エラーで知らぬ間にビルドがコケたりしますので気を付けたいです...(くわばらくわばら)
なんで辞めちゃったの?
Herokuの発表によると、Pythonエコシステムで幅広く使われる「.python-version」ファイルに移行することで、開発環境・CI環境・本番環境で一貫したバージョン維持を実現する狙いがあるとのことです。
以上です!
最後までお読みいただき、ありがとうございました。