1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Heroku runtime.txtやめるってよ

Posted at

HerokuがPythonのランタイム指定ファイルruntime.txtを非推奨(deprecated)にし、.python-versionに移行する件についてまとめました。

Herokuユーザーの皆さん、こんにちは!:wave:

突然ですが、あなたのリポジトリに「runtime.txt」は含まれていませんか?
先日、Herokuがruntime.txtをランタイム指定方法として非推奨(deprecated)にしましたので、詳細をご紹介します。

そもそも、runtime.txtって何よ?

Heroku上でPythonアプリケーションを作成する場合、Pythonのバージョンは最新バージョンパッチが自動設定されます。
一方で、ライブラリのバージョン依存性の観点より、Pythonバージョンを固定したい場合があります。
そこで、従来のHeroku環境では「runtime.txt」をルートディレクトリに配置し、ここにPythonランタイム(バージョン)を指定することができました。

runtime.txt
python-3.8.10

どうすれば良いの?

2024年10月より、Herokuでは「.python-versionファイル」によるランタイム指定の対応を開始しました。
リポジトリのルートディレクトリに.python-versionを配置し、そこに次の形式でPythonランタイムを指定できます。

.python-version
3.13

バージョンの数字だけで問題ありません。(超簡単)

バージョンパッチまで指定することもできます。

.python-version
3.13.2

なお、Herokuはメジャーバージョンでの指定を推奨しています。
セキュリティー更新が自動実行されますし、推奨するのも納得。

参照:

放置するとどうなるの?

runtime.txtは執筆時点で非推奨とされ、現在も使用できますが将来的に削除される可能性があります
削除後は最新のPythonバージョンが充てられることになりますので(多分)、ライブラリの整合性エラーに注意が必要です。
特に、requirements.txtにライブラリバージョンを指定していると、整合性エラーで知らぬ間にビルドがコケたりしますので気を付けたいです...(くわばらくわばら)

なんで辞めちゃったの?

Herokuの発表によると、Pythonエコシステムで幅広く使われる「.python-version」ファイルに移行することで、開発環境・CI環境・本番環境で一貫したバージョン維持を実現する狙いがあるとのことです。

以上です!
最後までお読みいただき、ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?