1. 前言
Python 可以使用「環境變數」來動態設定程式運行的環境。環境變數包含作業系統或應用程式在執行時所需的設定資訊,例如使用者名稱、路徑、語系設定等。本文將詳細介紹如何在 Python 中操作環境變數、如何根據不同環境管理設定,以及一些實際應用的範例。
2. 什麼是環境變數?
2.1 環境變數的定義
環境變數是作業系統或應用程式在執行時所參照的設定資訊。例如,預設的檔案路徑、使用者的主目錄、語言設定等,都會作為環境變數儲存在系統中。程式可以透過讀取這些變數來適當地控制其運作方式。
2.2 在 Python 中環境變數的重要性
在 Python 中,使用環境變數可以有效管理系統相關的設定,並降低安全風險。例如,API 金鑰或資料庫連線資訊等,若直接寫在程式碼中,可能會產生安全性問題。透過環境變數,開發者可以避免將機密資訊硬編碼在程式內,從而提高安全性與可管理性。

3. 在 Python 中獲取與設定環境變數
3.1 獲取環境變數
在 Python 中,可以使用 os
模組來獲取環境變數。透過 os.getenv()
或 os.environ.get()
方法,我們可以存取系統的環境變數。這些方法接受一個變數名稱作為引數,並返回對應的環境變數值。如果變數不存在,則返回 None
,這樣可以避免程式因缺少變數而發生錯誤。
import os
print(os.getenv('HOME')) # 獲取使用者的主目錄
os.environ
以字典的形式存儲環境變數。我們可以使用 os.environ['HOME']
來存取變數,但如果該變數不存在,則會拋出 KeyError
。因此,使用 get()
方法會更靈活。
import os
print(os.environ.get('HOME')) # 安全地獲取主目錄
3.2 設定與新增環境變數
我們也可以使用 os.environ
來設定或新增環境變數。環境變數的值必須是字串類型,因此如果需要存儲數值或列表,應先將其轉換為字串。
import os
os.environ['NEW_VARIABLE'] = 'New Value'
print(os.environ['NEW_VARIABLE']) # 輸出 'New Value'
這種方法設定的環境變數僅在程式執行期間有效,並不會影響整個系統。此外,如果同名的環境變數已存在,則其值將被覆蓋。
4. 使用環境變數優化應用程式設定
4.1 使用 python-dotenv
在大型專案中,通常會使用環境變數來管理不同環境(如開發、測試、正式環境)的設定。透過 python-dotenv
套件,我們可以在 .env
檔案中定義環境變數,並在專案內部輕鬆讀取。
.env
檔案範例:
DATABASE_URL=postgres://user:password@localhost:5432/dbname
SECRET_KEY=mysecretkey
可以使用 python-dotenv
來載入這些變數至程式:
from dotenv import load_dotenv
import os
load_dotenv() # 載入 .env 檔案
print(os.getenv('DATABASE_URL')) # 輸出 'postgres://user:password@localhost:5432/dbname'
這種方式特別適用於管理開發、測試與正式環境的不同設定,並能夠讓開發人員避免將機密資訊直接寫入程式碼,提升靈活性與安全性。
5. 刪除與修改環境變數
5.1 刪除環境變數
要刪除環境變數,可以使用 del
語句或 os.environ.pop()
方法。del
會完全刪除變數,而 pop()
則可以在刪除變數的同時返回其值。
import os
os.environ['TEST'] = 'testing'
del os.environ['TEST'] # 刪除 'TEST' 環境變數
使用 pop()
方法的範例如下:
import os
os.environ['TEST'] = 'testing'
print(os.environ.pop('TEST')) # 輸出 'testing',並刪除該環境變數
刪除後,環境變數將無法再被存取,若嘗試存取已刪除的變數,將會引發錯誤。因此,在刪除變數之前,應該考慮是否需要進行錯誤處理。
6. 根據專案需求設定環境變數
6.1 管理不同環境的變數
在開發、測試與正式環境中,可能需要不同的設定。環境變數提供了一種高效的管理方式。例如,在開發模式下可以開啟除錯功能,而在正式環境中則啟用更嚴格的安全設定。
import os
if os.getenv('PHASE') == 'development':
print('目前處於開發模式')
elif os.getenv('PHASE') == 'production':
print('目前處於正式環境')
透過設定 PHASE
這類環境變數,可以根據不同環境選擇適合的執行流程。

7. 實際應用:使用環境變數切換語言與執行階段
7.1 切換語言設定
環境變數也可用來控制程式的語言設定。例如,根據 LANG
變數的值,切換日文或英文顯示。
import os
if os.getenv('LANG') == 'ja_JP.UTF-8':
print('こんにちは!')
else:
print('Hello!')
7.2 根據執行環境選擇適當的設定
使用環境變數可以讓應用程式根據當前的執行環境(開發、測試、正式)選擇適當的行為,這有助於提高專案的可維護性與靈活性。
import os
phase = os.getenv('PHASE', 'development')
if phase == 'development':
print('使用開發環境設定')
elif phase == 'production':
print('使用正式環境設定')
透過這種方式,開發人員可以輕鬆切換不同的設定,而無需修改程式碼。
8. 總結
在 Python 中使用環境變數,可以有效提升應用程式的安全性與靈活性。透過環境變數,我們可以根據不同環境管理設定,避免將機密資訊直接寫入程式碼。使用 os
模組或 python-dotenv
,能夠讓我們更高效地管理設定,並確保應用程式的可擴展性與安全性。