Heroku の Python サポート
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年06月07日(金)
Heroku は、Django、Flask などの広く使われている Python のすべての Web フレームワークをサポートします。
サンプルの Django アプリを使用するデプロイチュートリアルについては、「Heroku スターターガイド (Python)」を参照してください。
Python アプリの認識
Heroku では、アプリのルートディレクトリに requirements.txt
、setup.py
、または Pipfile
ファイルが含まれている場合、そのアプリを自動的に Python アプリとして認識します。
Heroku でデプロイされているアプリケーションが Python アプリケーションとして認識されると、次のビルド出力が表示されます。
$ git push heroku master
-----> Python app detected
Python バージョンの指定
デフォルトでは、新しく作成された Python アプリは python-3.12.4
ランタイムを使用します。サポートされている別の Python バージョンを指定することもできます。
サポートされているランタイム
python-3.12.4
(すべてのスタックで利用可能。推奨)python-3.11.9
(すべてのスタック)で利用可能)python-3.10.14
(すべてのスタック)で利用可能)python-3.9.19
(Heroku-20 および Heroku-22 スタックでのみ利用可能)
非推奨のランタイム
python-3.8.19
(Heroku-20 スタックでのみ利用可能)
サポートされているバージョンのいずれかで、「Requested runtime is not available for this stack」(リクエストされたランタイムがこのスタックで使用できない) というエラーが表示された場合は、Python buildpack の最新バージョンを使用していることを確認してください。
ビルド動作
アプリに requirements.txt
ファイルが含まれている場合、Heroku は次のコマンドを実行して依存関係を解決します。
$ pip install -r requirements.txt
データベースの自動プロビジョニング
このセクションは、2023 年 5 月 15 日より前に作成されたアカウントまたは Heroku サポートにアカウントの自動プロビジョニングを有効にするように依頼した場合にのみ該当します。
Heroku Postgres データベースは、次の場合にアプリの初回デプロイで自動的にプロビジョニングされます。
- 2023 年 5 月 15 日より前にアカウントを作成しているか、Heroku サポートにアカウントの自動プロビジョニングを有効にするように依頼した場合
- アプリソースのルートに
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 またはカスタムブランチやタグにピン留めされているものがある場合、heroku/python
buildpack に切り替えることをお勧めします。heroku/python
はキュレートされた安定した buildpack レジストリリリースです。
Buildpack を切り替えるには、最初に以下を使用して、アプリに設定された既存の 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