Heroku の Python サポート
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2022年11月17日(木)
Heroku は、広く使われている Python のすべての Web フレームワーク (Django、Flask など) をサポートします。
サンプルの Django アプリを使用するデプロイチュートリアルについては、「Heroku スターターガイド (Python)」を参照してください。
Python アプリの認識
Heroku では、アプリのルートディレクトリに requirements.txt
、setup.py
または Pipfile
ファイルが含まれている場合、そのアプリを自動的に Python アプリとして認識します。
デプロイされているアプリケーションが Python アプリケーションであると認識されると、ビルド出力には次のように表示されます。
$ git push heroku master
-----> Python app detected
Python バージョンの指定
デフォルトでは、新しく作成された Python アプリは python-3.10.8
ランタイムを使用します。サポートされている別の Python バージョンを指定することもできます。
サポートされているランタイム
python-3.11.0
(すべてのサポートされているスタック)python-3.10.8
(すべてのサポートされているスタック)(推奨)python-3.9.15
(すべてのサポートされているスタック)python-3.8.15
(Heroku-18 および Heroku-20 のみ)python-3.7.15
(Heroku-18 および Heroku-20 のみ)
上記のいずれかのバージョンを使用しているときに「Requested runtime is not available for this stack」(リクエストされたランタイムがこのスタックで使用できない) というエラーが 表示された場合、アプリが 最新バージョンの Python buildpack を使用していることを確認してください。
Python 2 はコミュニティ指定のサポート終了に達したため、 これをまだ使用しているアプリをできるだけ早く Python 3 に移行する必要があります。
ビルド動作
アプリに requirements.txt
ファイルが含まれている場合、Heroku は次のコマンドを実行して依存関係を解決します。
$ pip install -r requirements.txt
データベースのプロビジョニング
mini
Heroku Postgres データベースは、以下の場合に自動的にプロビジョニングされます。
- アプリソースのルートに
manage.py
ファイルが存在する django
およびpsycopg2
の両方のパッケージがインストールされている
データベースの自動プロビジョニングでは、アプリの DATABASE_URL
環境設定も入力されます。
他の Python アプリについては、Heroku Postgres データベースは自動的にプロビジョニングされませんが、簡単に手動プロビジョニングできます。
Python buildpack バージョンの確認
Python buildpack は、Heroku にデプロイできる slug に Python のソースコードを変換するものです。
最適な結果を得るには、buildpack の最新の安定バージョンを使用する (タグやブランチにピン留めしたりフォークを使用したりしない) ことをお勧めします。そうでないと、文書化された一部の機能が 動作せず、buildpack に対して行われる将来のバグ修正や機能強化の恩恵を受けられません。
安定した heroku/python
buildpack リリースもビルド環境に事前インストールされているため、
これを使用すると GitHub URL よりもビルドパフォーマンスが向上します。
詳細については、「Buildpack の参照」を参照してください。
アプリに設定されている buildpack を確認するには、heroku buildpacks
CLI コマンドを使用します。
$ heroku buildpacks
=== my-example-app Buildpack URL
https://github.com/heroku/heroku-buildpack-python.git
上記のような GitHub URL (またはカスタムブランチやタグにピン留めされているもの) がある場合、キュレートされた安定した buildpack レジストリリリースである heroku/python
に切り替えることをお勧めします。
これを行うには、最初に以下を使用して、アプリに設定された既存の buildpack を消去します。
$ heroku buildpacks:clear
Buildpacks cleared.
次に、Python buildpack を次のように追加します。
$ heroku buildpacks:add heroku/python
Buildpack added.
最後に、設定された buildpack が正しいことを確認します。
$ heroku buildpacks
=== my-example-app Buildpack URL
heroku/python
アプリにもともと複数の buildpack が設定されていた場合、以前 heroku buildpacks
に一覧表示されていたのと同じ順序で追加する必要があります。次に例を示します。
$ heroku buildpacks
=== my-example-app Buildpack URLs
1. heroku-community/example-buildpack
2. https://github.com/heroku/heroku-buildpack-python.git
$ heroku buildpacks:clear
$ heroku buildpacks:add heroku-community/example-buildpack
$ heroku buildpacks:add heroku/python
$ heroku buildpacks
=== my-example-app Buildpack URLs
1. heroku-community/example-buildpack
2. heroku/python