跳转至

环境变量

Tip

如果你已经了解什么是"环境变量"及其使用方法,可以跳过本节内容。

环境变量(也称为 env var)是一种存在于 操作系统 中、Python 代码外部 的变量,可以被 Python 代码(或其他程序)读取。

环境变量可用于处理应用程序设置、作为 Python 安装过程的一部分等场景。

创建和使用环境变量

你可以在 shell(终端)创建和使用环境变量,无需依赖 Python:

// 创建名为 MY_NAME 的环境变量
$ export MY_NAME="Wade Wilson"

// 然后可以被其他程序使用,例如
$ echo "Hello $MY_NAME"

Hello Wade Wilson
// 创建环境变量 MY_NAME
$ $Env:MY_NAME = "Wade Wilson"

// 被其他程序使用,例如
$ 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")

Tip

os.getenv() 的第二个参数是返回的默认值。

如果不提供,默认为 None,这里我们提供 "World" 作为要使用的默认值。

然后你可以调用该 Python 程序:

// 此处我们尚未设置环境变量
$ python main.py

// 由于未设置环境变量,我们得到默认值

Hello World from Python

// 但如果先创建环境变量
$ export MY_NAME="Wade Wilson"

// 然后再次调用程序
$ python main.py

// 现在它可以读取环境变量了

Hello Wade Wilson from Python
// 此处我们尚未设置环境变量
$ python main.py

// 由于未设置环境变量,我们得到默认值

Hello World from Python

// 但如果先创建环境变量
$ $Env:MY_NAME = "Wade Wilson"

// 然后再次调用程序
$ python main.py

// 现在它可以读取环境变量了

Hello Wade Wilson from Python

由于环境变量可以在代码外部设置,但可以被代码读取,并且不必与其余文件一起存储(提交到 git),因此通常将它们用于配置或设置

你还可以为特定的程序调用创建环境变量,该变量仅对该程序可用,且仅在其持续期间有效。

为此,请在同一行的程序调用之前创建它:

// 为此程序调用行内创建环境变量 MY_NAME
$ MY_NAME="Wade Wilson" python main.py

// 现在它可以读取环境变量了

Hello Wade Wilson from Python

// 之后环境变量不再存在
$ python main.py

Hello World from Python

Tip

你可以在 十二要素应用:配置 中了解更多信息。

类型和验证

这些环境变量只能处理文本字符串,因为它们存在于 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 中使用它们有了基本的了解。

你也可以在 环境变量的维基百科页面 上阅读更多相关信息。

在许多情况下,环境变量的用途和即时应用性可能不太明显。但它们在开发过程中会频繁出现在各种场景中,因此了解它们是有好处的。

例如,在下一节关于 虚拟环境 的内容中,你将需要这些信息。