跳至內容

環境變數

提示

如果您已經知道什麼是「環境變數」以及如何使用它們,可以跳過此部分。

環境變數(也稱為「env var」)是存在於 Python 程式碼外部作業系統中的變數,您的 Python 程式碼(或其他程式)可以讀取它。

環境變數可用於處理應用程式設定、作為 Python 安裝的一部分等等。

建立和使用環境變數

您可以在Shell(終端機)建立和使用環境變數,而無需使用 Python

// You could create an env var MY_NAME with
$ export MY_NAME="Wade Wilson"

// Then you could use it with other programs, like
$ echo "Hello $MY_NAME"

Hello Wade Wilson
// Create an env var MY_NAME
$ $Env:MY_NAME = "Wade Wilson"

// Use it with other programs, like
$ echo "Hello $Env:MY_NAME"

Hello Wade Wilson

在 Python 中讀取環境變數

您也可以在 Python 外部的終端機中(或使用任何其他方法)建立環境變數,然後在 Python 中讀取它們

例如,您可以有一個名為 main.py 的檔案,其中包含

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

提示

os.getenv() 的第二個參數是要返回的預設值。

如果未提供,則預設為 None,這裡我們提供 "World" 作為預設值。

然後您可以呼叫該 Python 程式

// Here we don't set the env var yet
$ python main.py

// As we didn't set the env var, we get the default value

Hello World from Python

// But if we create an environment variable first
$ export MY_NAME="Wade Wilson"

// And then call the program again
$ python main.py

// Now it can read the environment variable

Hello Wade Wilson from Python
// Here we don't set the env var yet
$ python main.py

// As we didn't set the env var, we get the default value

Hello World from Python

// But if we create an environment variable first
$ $Env:MY_NAME = "Wade Wilson"

// And then call the program again
$ python main.py

// Now it can read the environment variable

Hello Wade Wilson from Python

由於環境變數可以在程式碼外部設定,但可以由程式碼讀取,並且不必與其他檔案一起儲存(提交到 git),因此通常將它們用於設定或配置

您也可以僅為特定的程式呼叫建立環境變數,該變數僅對該程式可用,並且僅在其持續時間內可用。

要做到這一點,請在程式本身的同一行之前建立它

// Create an env var MY_NAME in line for this program call
$ MY_NAME="Wade Wilson" python main.py

// Now it can read the environment variable

Hello Wade Wilson from Python

// The env var no longer exists afterwards
$ python main.py

Hello World from Python

提示

您可以在十二要素應用程式:配置中閱讀更多相關資訊。

類型和驗證

這些環境變數只能處理文字字串,因為它們在 Python 外部,並且必須與其他程式和系統的其餘部分(甚至與不同的作業系統,如 Linux、Windows、macOS)相容。

這意味著在 Python 中從環境變數讀取的任何值將是 str,並且任何轉換為不同類型或任何驗證都必須在程式碼中完成。

您將在進階使用者指南 - 設定和環境變數中學習更多關於使用環境變數處理應用程式設定的資訊。

PATH 環境變數

有一個稱為 PATH特殊環境變數,作業系統(Linux、macOS、Windows)使用它來尋找要執行的程式。

變數 PATH 的值是一個長字串,由目錄組成,在 Linux 和 macOS 上以冒號 : 分隔,在 Windows 上以分號 ; 分隔。

例如,PATH 環境變數可能如下所示

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

這表示系統應該在以下目錄中尋找程式

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

這表示系統應該在以下目錄中尋找程式

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

當您在終端機輸入指令時,作業系統會在PATH環境變數中列出的每個目錄搜尋程式。

例如,當您在終端機輸入python時,作業系統會在該列表中的第一個目錄中搜尋名為python的程式。

如果找到了,就會使用它。否則,它會繼續在其他目錄中搜尋。

安裝 Python 並更新PATH

安裝 Python 時,系統可能會詢問您是否要更新PATH環境變數。

假設您安裝了 Python,它位於/opt/custompython/bin目錄中。

如果您選擇更新PATH環境變數,安裝程式會將/opt/custompython/bin新增到PATH環境變數中。

它看起來可能是這樣的

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

如此一來,當您在終端機輸入python時,系統會在/opt/custompython/bin(最後一個目錄)中找到 Python 程式並使用它。

假設您安裝了 Python,它位於C:\opt\custompython\bin目錄中。

如果您選擇更新PATH環境變數,安裝程式會將C:\opt\custompython\bin新增到PATH環境變數中。

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

如此一來,當您在終端機輸入python時,系統會在C:\opt\custompython\bin(最後一個目錄)中找到 Python 程式並使用它。

所以,如果您輸入

$ python

系統會在/opt/custompython/bin找到python程式並執行它。

這大致等於輸入

$ /opt/custompython/bin/python

系統會在C:\opt\custompython\bin\python找到python程式並執行它。

這大致等於輸入

$ C:\opt\custompython\bin\python

學習虛擬環境時,這些資訊會很有用。

結論

透過以上說明,您應該對環境變數是什麼以及如何在 Python 中使用它們有了基本的了解。

您也可以在環境變數的維基百科中閱讀更多相關資訊。

在許多情況下,環境變數的用途和應用方式並不明顯。但是,在開發過程中,它們會在許多不同的情況下出現,所以了解它們是很好的。

例如,您在下一節關於虛擬環境的內容中會需要這些資訊。