APIキーを見せずにpushできるpython-dotenvを使ってみた

GCPを使ったプログラムを書いていて、APIキーをべた書きせずにGithubへpushしたいなぁーってとき使えるものを見つけたのでブログに書いておこうと思います。

python-dotenvです。
https://github.com/theskumar/python-dotenv

環境

  • Python3.6.4
  • python-dotenv==0.8.2

準備-mac

# 仮想環境を作成
python -m venv dotenv-demo

#仮想環境の立ち上げ
cd dotenv-demo
source bin/activate

#python-dotenvのインストール
pip install python-dotenv

.envファイルの作成

echo "ENV_KEY=1234567890" > .env

ここからさらに、「get_env.py」「main.py」を作成します。 ファイル名は特に指定がありませんので、お好きな名前で大丈夫です。ここではmain.pyから、

.envから値を取得する「get_env.py」ファイル

「get_env.py」は.envファイルから値を読み込みます。os.path.join(os.path.dirname(file), '.env')で、「get_env.py」の相対パスを取得し、joinで「.env」ファイルを指定します。dotenv_pathに格納された.envファイルのパスを元に、load_dotenvでファイルの中身を読み取ります。

import os
import os.path
import dotenv

dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
dotenv.load_dotenv(dotenv_path)

API_KEY = os.environ.get("ENV_KEY")

実行「main.py」ファイル

「main.py」は本当にシンプルな作りにしました。複雑にしすぎると自分もわからなくなるので笑

import get_env

print(get_env.API_KEY)

実行

(dotenv-demo) yoshitakuMBA:dotenv-demo yoshitaku$ python3 main.py 
1234567890

無事に.envファイルの中の値が取得できています!

まとめ

  • python-dotenvを使いました
  • .envファイルを通して、API KEYをファイルに書かない方法を学びました

.envファイルをGithubにpushしては意味が無いので、ちゃんと除外しておきましょう… README.mdへは、.envファイルへの記述方法も忘れないように。 .env.sampleと書いて、わかりやすいようにしておくのがいいみたいですね!