為什麼要用 .env, 而不是 config.py

by | 3 月 15, 2023 | Python

在開發程式的時候,裡面多少有些敏感資訊,比如 API 金鑰、資料庫密碼等。網路的各種教學告訴你,可以把這些敏感資訊放在 config.py 這樣的文件裡,然後把它加入到 .gitignore,好像問題就解決了。但實際上,這並不是最佳選擇,我們還有更好的方法:使用 .env 文件!

.env 的優點

  1. 保護敏感資訊:使用 .env 文件,你可以將敏感資訊存放在本地,並將其加入到 .gitignore 中。這樣一來,你就不用擔心敏感資訊被意外提交到版本控制系統了。
  2. 標準化:.env 文件是一個更通用的解決方案,讓開發者遵循標準化的做法來管理環境變數。這有助於使專案結構更清晰,並降低了新開發者加入專案時的學習曲線。
  3. 語言和框架無關:.env 文件可以與任何程式語言和框架一起使用,這意味著你可以在整個專案中保持一致的設定管理方式,即使專案中使用了多種技術堆疊。
  4. 環境變數:使用 .env 文件來管理設定,使你能夠利用環境變數的優勢。這讓你可以在不同的環境中(如開發、測試和生產環境)輕鬆地更改設定,而無需修改 config.py 中的硬編碼值。

 

.env 範例程式碼

以下是一個如何將 config.py 轉換到 .env 的範例程式碼。假設我們有以下的 config.py:

# config.py
API_KEY = "your_api_key_here"
DATABASE_URL = "your_database_url_here"
SECRET_KEY = "your_secret_key_here"

 

我們首先需要創建一個 .env 文件,將敏感資訊放入其中:

# .env
API_KEY=your_api_key_here
DATABASE_URL=your_database_url_here
SECRET_KEY=your_secret_key_here

 

接著,確保將 .env 文件加入到 .gitignore 中,避免將敏感資訊提交到版本控制系統:

# .gitignore
.env

 

然後,我們需要在 Python 程式中使用 python-dotenv 模組來讀取 .env 文件中的環境變數。如果你還沒有安裝 python-dotenv,可以使用以下命令安裝:

pip install python-dotenv

 

最後,修改你的 Python 程式來讀取 .env 文件中的變數:

# main.py
import os
from dotenv import load_dotenv

load_dotenv()

api_key = os.getenv("API_KEY")
database_url = os.getenv("DATABASE_URL")
secret_key = os.getenv("SECRET_KEY")

# 接下來你可以在程式中使用這些變數了

 

在 Heroku 等雲端伺服器平台的使用

在 Heroku 這類雲端平台中,設定環境變數非常簡單。以下是操作步驟:

  • 登入 Heroku Dashboard,並選擇你的應用程式。
  • 在應用程式內,點選「Settings」。
  • 捲到「Config Vars」部分,然後點擊「Reveal Config Vars」。
  • 在此處,你可以增加、修改或刪除環境變數。將變數名稱輸入「KEY」欄位,將對應的值輸入「VALUE」欄位,然後點擊「Add」。

Heroku 允許你將環境變數匯出為 JSON 格式或將其匯入。你可以使用 Heroku CLI 完成此操作。以下是匯出與匯入環境變數的相關命令:

  • 匯出環境變數:heroku config -s -a your_app_name > config.env
  • 匯入環境變數:heroku config:set -a your_app_name $(cat config.env)

記住,環境變數在設定後,你可以隨時查看和修改。使用 Heroku CLI 來查看應用程式的環境變數,只需運行以下命令:heroku config -a your_app_name

 

 

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
RSS
Follow by Email