HerokuにPythonアプリをデプロイする方法を徹底解説
はじめに
この記事では、HerokuにPythonアプリケーションをデプロイする手順を解説します。
作業を始める前に、以下の環境が整っていることを確認してください。
- Python 3.6がインストールされていること
- Pipenvがインストールされていること
- Heroku CLIがローカル環境にインストールされ、CLIからHerokuにログイン済みであること
セットアップ方法の詳細は、Heroku公式ドキュメント「Getting Started on Heroku with Python」を参照してください。
1. Gitリポジトリの準備
Herokuへデプロイするには、アプリケーションがGitリポジトリで管理されている必要があります。まず、ターミナルでGitリポジトリのルートディレクトリ(コードが配置されている場所)に移動します。
$ cd your-project-directory
2. Herokuアプリケーションの作成
次のコマンドを実行して、Heroku上に新しいアプリケーションを作成します。
$ heroku create Creating lit-bastion-5032 in organization heroku... done, stack is cedar-14 https://lit-bastion-5032.herokuapp.com/ | https://git.heroku.com/lit-bastion-5032.git
アプリを作成すると、「heroku」という名前のGitリモートが自動的に作成され、ローカルのGitリポジトリに関連付けられます。
なお、Herokuはアプリに対してランダムな名前(この例では lit-bastion-5032)を自動生成します。独自のアプリ名を使いたい場合は、以下のようにパラメータで指定することも可能です。
$ heroku create my-custom-app-name
3. コードをHerokuへプッシュする
リモートが追加されたら、次のコマンドでコードをHerokuにプッシュします。
$ git push heroku master Counting objects: 232, done. Delta compression using up to 4 threads. Compressing objects: 100% (217/217), done. Writing objects: 100% (232/232), 29.64 KiB | 0 bytes/s, done. Total 232 (delta 118), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: -----> Installing python-3.6.0 remote: -----> Installing requirements with latest pipenv... remote: Installing dependencies from Pipfile.lock... remote: $ python manage.py collectstatic --noinput remote: 58 static files copied to '/app/gettingstarted/staticfiles', 58 post-processed. remote: remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 39.3M remote: -----> Launching... remote: Released v4 remote: https://lit-bastion-5032.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To git@heroku.com:lit-bastion-5032.git * [new branch] master -> master
これでデプロイは完了です。出力されたURLにアクセスすれば、アプリが動作していることを確認できます。
4. requirements.txtの作成ポイント
重要な注意点として、依存するサードパーティ製モジュール(importしているライブラリ)は、requirements.txtにバージョン番号付きで明記する必要があります。最新版を使いたい場合はバージョン指定を省略しても構いません。
記述例:
Flask==0.8 Jinja2==2.6 Werkzeug==0.8.3 certifi==0.0.8 chardet==1.0.1
requirements.txtの書き方や依存関係管理の詳細については、Heroku公式ドキュメント「Python dependencies via pip」を参照してください。
まとめ
HerokuへのPythonアプリのデプロイは、①Gitリポジトリの準備、②heroku createによるアプリ作成、③git push heroku masterによるプッシュ、というシンプルな流れで行えます。依存ライブラリをrequirements.txtに正しく記載しておくことが、ビルド成功の鍵となります。
-
Pythonのimport文で複数のモジュールを一度にインポートする方法
Pythonでは、1つのimport文で複数のモジュールをまとめてインポートできます。方法はとてもシンプルで、モジュール名をカンマ(,)で区切って記述するだけです。>>> import math, sys, os別名(エイリアス)を付けてインポートするインポートしたモジュールを別の名前で扱いたい場合は、各モジュール名の後に「as」を付け、続けて任意の別名を指定します。これにより、コード内では指定した別名でモジュールを参照できるようになります。>>> import math as Mathematics, sys as system文字列のリストから動的にイン
-
Pythonモジュールの仕組みを徹底解説!importの基本と使い方を実例で学ぼう
Pythonでは、関数や変数などの定義(definition)をひとつのファイルにまとめ、それをスクリプトやインタラクティブな対話シェルの中で再利用することができます。このような定義を格納したファイルのことを「モジュール(module)」と呼びます。 モジュールとは何か モジュール内に書かれた定義は、他のモジュールにインポートして利用できますし、メインモジュールに読み込むことも可能です。ここでいうメインモジュールとは、トップレベルで実行されるスクリプトや、電卓モード(対話モード)でアクセスできる変数群のことを指します。 モジュールが見つかる仕組み:検索パス 例えば hello というモジュ