Python
 Computer >> コンピューター >  >> プログラミング >> Python

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に正しく記載しておくことが、ビルド成功の鍵となります。

  1. Pythonのimport文で複数のモジュールを一度にインポートする方法

    Pythonでは、1つのimport文で複数のモジュールをまとめてインポートできます。方法はとてもシンプルで、モジュール名をカンマ(,)で区切って記述するだけです。>>> import math, sys, os別名(エイリアス)を付けてインポートするインポートしたモジュールを別の名前で扱いたい場合は、各モジュール名の後に「as」を付け、続けて任意の別名を指定します。これにより、コード内では指定した別名でモジュールを参照できるようになります。>>> import math as Mathematics, sys as system文字列のリストから動的にイン

  2. Pythonモジュールの仕組みを徹底解説!importの基本と使い方を実例で学ぼう

    Pythonでは、関数や変数などの定義(definition)をひとつのファイルにまとめ、それをスクリプトやインタラクティブな対話シェルの中で再利用することができます。このような定義を格納したファイルのことを「モジュール(module)」と呼びます。 モジュールとは何か モジュール内に書かれた定義は、他のモジュールにインポートして利用できますし、メインモジュールに読み込むことも可能です。ここでいうメインモジュールとは、トップレベルで実行されるスクリプトや、電卓モード(対話モード)でアクセスできる変数群のことを指します。 モジュールが見つかる仕組み:検索パス 例えば hello というモジュ