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ファイルの中の値が取得できています!
まとめ
.envファイルをGitHubにpushしては意味が無いので、ちゃんと除外しておきましょう… README.mdへは、.envファイルへの記述方法も忘れないように。 .env.sampleと書いて、わかりやすいようにしておくのがいいみたいですね!