Python 開發人員經常處理他們不想讓其他人看到的數據,例如 API 金鑰、API 機密、資料庫名稱等。
程式設計師儲存這些秘密的一種方法是在環境變數中。在本文中,您將學習有關在 Python 中使用環境變數所需的所有知識。我們將向您展示如何設定 Python 環境變數、如何取得它們,以及保護所有秘密安全的不同方法。最後,我們將透過一個現實生活中的範例來說明我們如何在 Vonage 中使用它們。
使用下面的連結在文章中向前跳:
環境變數(有時稱為「env vars」)是儲存在程式外部的變量,可以影響程式的運作方式。例如,您可以設定包含 API 金鑰和機密的環境變數。然後,您的程式在連接到 API 時可能會使用這些變數。
將秘密儲存在您的環境中而不是原始程式碼中有一些優點:
本質上,環境變數允許您在不更改程式本身的情況下更改程式的行為。
您可以在作業系統中儲存環境變量,但還有其他使用它們的方法,我們很快就會了解。
要學習本教程,您需要在電腦上安裝 Python。您可以從Python官方網站下載Python來安裝。
您可以使用內建的 os 模組在 Python 中取得和設定環境變數。
您可以透過將以下程式碼儲存在Python檔案中然後執行此Python程式來查看程式中的所有環境變數:
執行此程式碼時,您的 Python 解釋器應該會列印出作業系統的所有環境變數。您可以像 Python 字典一樣存取 os.environ 中的不同環境變數。使用Python取得環境變數的方法有兩種:
上面 Python 程式碼中的最後兩行執行相同的操作:都從作業系統取得 USER 環境變數。但是,當您使用第一種方式時,如果 Python 找不到該變量,則會拋出異常。
如果 Python 應用程式運行需要環境變量,則使用 os.environ['MY_ENVIRONMENT_VARIABLE'];如果環境變數是可選的,則使用 os.environ.get('MY_ENVIRONMENT_VARIABLE')。
要在 Python 中設定環境變量,您可以將它們新增至 os.environ 對象,就像使用字典一樣。但是,只允許使用字串,因為這些字串會直接傳遞到運行解釋器的 shell。
要更新環境變量,只需以完全相同的方式覆蓋它即可:
您可能出於不同的原因想要儲存環境變量,因此也有不同的儲存方式。有時,您只需要在本機電腦上設定一些內容,而在其他情況下,您可能需要在生產中運行應用程式 - 這些用例需要不同的方法!
下面,我們將向您展示 Python 儲存環境變數的五種方法:
有時,如果您只想快速設定某些內容,則不想透過 Python 建立環境變數。幸運的是,這可以透過命令列來完成。我在這裡給出的範例適用於類別 Unix 系統(Mac、Linux 等),但如果您使用的是 Windows,您可以在本教程中學習如何取得和設定環境變數。
在前面的範例中,USER 是作業系統設定的環境變量,代表誰在使用您的電腦。雖然您的作業系統會自動建立此變量,但您也可以建立自己的環境變數。
您可以透過開啟命令列並鍵入以下內容(在類別 Unix 系統上)來從命令列查看所有環境變數:
導出
這將為您提供命令列 shell 有權存取的每個環境變數的清單。
以下是如何在命令列上建立環境變數:
匯出 VONAGE_API=your_api
這將建立一個名為 VONAGE_API 的變數並將其值設為 your_api。您可以像這樣列印任何變數的值:
回顯$VONAGE_API
當您執行上面的程式碼時,您將看到 your_api 作為輸出。
當您使用終端機/命令列建立新的環境變數時,它僅針對該會話存在。當您關閉終端時,環境變數不再存在。通常,在程式設計時,您希望環境變數持久存在,以便每次執行程式碼時都可以使用它們。實現此目的的一種方法是將它們儲存在檔案中:例如 .env 檔案。
讓我們建立一個範例專案來示範如何使用 .env 檔案來儲存環境變數。
首先,使用終端機為本教學建立一個新資料夾,進入其中並在其中建立一個 .env 檔案:
mkdir env_variables_tutorial cd env_variables_tutorial touch .env
將此行新增至您的 .env 檔案:
VONAGE_API=your_api
python3 -m venv venv 。 ./venv/bin/activate
現在我們處於Python虛擬環境中,我們可以安裝我們需要的套件。
pip install python-dotenv
現在,我們可以使用此套件中的 dotenv 模組將環境變數從 .env 檔案載入到 Python 可以透過 os 模組存取的環境中。建立一個包含以下內容的 Python 檔案:
load_dotenv 函數將 .env 檔案中的環境變數引入 os.environ,然後可以像作業系統設定的任何其他環境變數一樣使用它。
當您建立用於生產的軟體時,您可能不會從電腦上執行它。相反,您很可能會在伺服器上運行程式碼。
這意味著您需要知道如何在生產中運行程式碼的任何位置設定和獲取環境變數。
這裡是雲端提供者的列表,您可以在其中獲取有關使用它們處理環境變數的更多資訊:
如果您使用基於雲端的 CI/CD 系統,例如 GitHub Actions、CircleCI、Travis 或 Jenkins,您也可以在其係統中儲存環境變數。
如果您的專案使用GitHub,您可以透過導航至「設定」標籤並在「安全性」下的「秘密和變數」設定中設定API 金鑰等,將環境變數儲存在儲存庫的設置中”.
在這裡,您可以透過點擊選項並設定值來建立新的儲存庫金鑰。現在,這將在您的 GitHub Actions 運行中可用。
有大量有關使用 GitHub Actions、CircleCI、Travis 和 Jenkins 設定環境變數的信息,以及其他提供者的資訊。
將您的機密儲存在 .env 檔案中可以保留您的環境變量,但確實存在一些問題。
例如,假設您所在的團隊有 10 人。每個人都在 .env 檔案中追蹤他們的秘密,並且其中一個秘密發生了變化(假設您獲得了新的 API 金鑰)。這樣的話,十個人都必須更新他們的 .env 文件,效率不是很高。
或者,如果您決定從 Heroku 切換到 AWS 該怎麼辦?在這種情況下,你將不得不學習如何在新平台上處理秘密,這需要額外的工作。
為了解決這些問題,有些程式設計師使用像多普勒這樣的通用秘密管理器。通用秘密管理器可讓您將秘密儲存在一個地方,以便團隊中的每個人都可以存取它們。
使用通用金鑰管理器,您的金鑰獨立於本機電腦或雲端供應商,因此無論您在何處執行程式碼,都可以隨身攜帶它們。
有時,如果您使用外部 API 的範例專案或範例程式碼片段,擁有者/維護者會提供工具以使其更易於使用。通常,您需要使用環境變數來最佳化工具設定。
在 Vonage,我們在 Python 程式碼範例中使用環境變數來發送簡訊、撥打電話、發送驗證碼、檢查詐欺分數等等。
假設您想使用 Vonage 的 Number Insight API 來取得某些電話號碼的資訊。在這種情況下,您可能想要使用像這樣的程式碼範例,以便在 Python 中快速運行。
要使用此範例程式碼,請先建立 Vonage 帳戶(不用擔心,它是免費的!)以取得 API 金鑰和秘密來驗證您的 API 呼叫。
接下來,在 https://github.com/Vonage/vonage-python-code-snippets/ 克隆儲存庫。完成後,建立一個新的 Python 虛擬環境並使用
安裝所需的依賴項您應該看到有關您輸入的電話號碼的信息,這意味著您使用 Vonage 的 Number Insight API 從環境變數中查找電話號碼,而根本不需要編輯 Python 檔案本身!這是使用環境變數的一個主要優點。
如果先前的虛擬環境仍然處於活動狀態,則停用 # python3 -m venv venv 。 ./venv/bin/activate pip install -r requests.txt
最後,將 .env.dist 檔案重新命名為 .env,並將您的 API 金鑰和金鑰新增至該檔案中,並將 INSIGHT_NUMBER 的值變更為您要尋找的數字。現在您已準備好使用
運行程式碼python number-insight/ni-basic.py
您應該看到有關您輸入的電話號碼的信息,這意味著您使用 Vonage 的 Number Insight API 從環境變數中查找電話號碼,而根本不需要編輯 Python 檔案本身!這是使用環境變數的一個主要優點。
取得和設定環境變數是創建生產軟體的重要組成部分。如果您已完成本教學課程,現在已經熟悉如何使用 Python 取得和設定環境變數。
您現在也了解了儲存秘密的不同選項:使用作業系統暫時設定它們、將它們儲存在 .env 檔案中、將它們保存在雲端以及使用通用秘密管理器。您使用的方法將取決於您正在從事的專案的情況。如果您想了解更多信息,這篇關於在環境變數中使用私鑰的文章有更多資訊。
如果您想開始使用Vonage API,您可以註冊一個免費的開發者帳戶(有免費積分!)如果您對本教程有任何疑問,請隨時透過我們的Vonage Community Slack 與我們聯繫並詢問我們在那裡或透過X(以前稱為Twitter)向我們發送訊息。
現在,繼續嘗試在您自己的 Python 專案中使用環境變數!
以上是Python 環境變數 (Env Vars):入門的詳細內容。更多資訊請關注PHP中文網其他相關文章!