機密情報を安全に扱うべし!
PythonでAPIキーやパスワードを扱うときに、コードに PASSWORD = "abcd1234" と直接書くのは危険です!ローカルの場合であれば問題ないですが⋯
GitHubにアップした瞬間、世界中の人に大事な機密情報がバレてしまいます😱
それを防ぐために使用するのがdotenvです!
今回はdotenvの使い方を説明します。
dotenvって何?
秘密情報(APIキー・パスワードなど)を Pythonコードとは別の場所 に保存して、安全に使うための仕組みです。
.envファイルの内容をプログラム実行時に自動で環境変数へ反映できるためGitHubには機密情報がバレません!
秘密情報とコードを 完全に分離 できるのです!
※環境変数とは、「パソコンやプログラムが動くときに必要な情報を入れておく「名前がついた箱」のことです。
①.env ファイルを作る
まずは、プロジェクトフォルダの中に .env を作成して、パスワードを書きます!
.envファイル
SPREADSHEET_ID=xxxxxx
GOOGLE_MAPS_API_KEY=xxxxxx
PASSWORD=xxxxxx
②必要なモジュールをimportする
以下の2つをimportします。
import os
from dotenv import load_dotenv
環境変数のようなOSに関する機能を利用するには、必ずosモジュールをimportする必要があります。
from dotenv import load_dotenvは.envのファイルを呼び出すのに必要になります。
③.envファイルを読み込む
load_dotenv()のコードを書いて.envのファイルを読込します!
引数を何も入れない場合、load_dotenv() は カレントディレクトリにある.envを自動で探して読み込んでくれる から。
別の場所にファイルがある場合は引数にパスを書いて指定します!
例)load_dotenv("/Users/****/project/.env")
ファイル名が違う場合は、引数にファイル名を書いて指定します!
例)load_dotenv("config.env")
④os.getenv() でアクセス
引数のには.envに設定した"キー名"を入力します!
os.getenv("キー名") の "キー名" は .env に書いた名前と 完全一致 していないと取得できません。
例)os.getenv("SPREADSHEET_ID")
⑤.gitignoreに追加する
.gitignore コミット&プッシュの対象にしたくないファイルなどをあらかじめ指定することができるファイルになります!
⚠.env は必ず .gitignore に追加して GitHub にアップされないようにします!
うっかり間違ってアップしてしまった場合でも、コミットされる前にブロックする機能です!!
まとめ
dotenvを利用することで安全にコードを書くことができます!
| やってくれること | 目的 |
|---|---|
| from dotenv import load_dotenv | dotenv を使えるようにして、.envを呼び出す |
| .env を作成 | 機密情報を保存するファイル |
| load_dotenv() | .env の内容を読み込む |
| os.getenv() | アクセスして値を取り出す(取得) |
実際にコードで書くとこんな感じです!
#インポートする
`from dotenv import load_dotenv`
`import os`
#.envを読み込む
`load_dotenv()`
#アクセスして値を取り出す(取得)
`SPREADSHEET_ID = os.getenv("SPREADSHEET_ID")`
#値が取れているかターミナルに出力してみる!
`print(SPREADSHEET_ID)`