2020-04-05
【Heroku】Python で環境変数(.env)を読み込む方法
APIキーやトークン・パスワードなど、git で管理をしたくない(するべきでない)機密データを取り扱う際、一般に利用される手段の一つとして .env があります。
VPS やレンタルサーバであればディレクトリ内に直接作成・記述できますが、Heroku CLI のように git 経由でデプロイする場合はどうするのかな~と思い調べたのでメモ。コマンドが用意されてました。
ローカルで .env を読み込むには
python-dotenv を利用します。
bash
pip install python-dotenv
ファイルを以下のように記述。
.env
BOT_TOKEN=abc-1234-xyz
main.py
import os
from os.path import join, dirname
from dotenv import load_dotenv
dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path)
BOT_TOKEN = os.environ.get("BOT_TOKEN")
print(BOT_TOKEN) # abc-1234-xyz
当然、git での管理は行いません。
.gitignore
.env
Heroku では
heroku-cli の config
コマンドで環境変数を設定します。アプリケーション名を APP_NAME
とします。
bash
heroku login
heroku config:set BOT_TOKEN="abc-1234-xyz" -a APP_NAME
# 確認する場合
heroku config:get BOT_TOKEN -a APP_NAME
これで環境変数に BOT_TOKEN=abc-1234-xyz
が追加されます。
Heroku上では上記コマンドで環境変数が設定されるため、 .env ファイルは生成/読込されませんが、そのままデプロイしてしまうと依存パッケージ不足でエラーとなってしまいます。そのため、requirements.txt に python-dotenv を記述しておきましょう。
requirements.txt
python-dotenv
あとは runtime.txt
と Procfile
をアプリケーションのタイプに応じて記述してデプロイすれば完了です。