跳到内容

环境变量

在我们深入代码之前,让我们先了解一些我们将需要理解如何使用 Python(和一般的编程)的基础知识。让我们看看关于环境变量的一些内容。

提示

如果您已经知道什么是“环境变量”以及如何使用它们,请随意跳过此部分。

环境变量(也称为“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

提示

您可以在 The Twelve-Factor App: Config 中阅读更多相关信息。

类型和验证

这些环境变量只能处理文本字符串,因为它们是 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 程序并使用它。

所以,如果您键入

$ python

系统将在 /opt/custompython/bin找到 python 程序并运行它。

这大致相当于键入

$ /opt/custompython/bin/python

系统将在 C:\opt\custompython\bin\python找到 python 程序并运行它。

这大致相当于键入

$ C:\opt\custompython\bin\python

这些信息在学习 虚拟环境 时将非常有用。

总结

有了这些,您应该对环境变量是什么以及如何在 Python 中使用它们有了基本的了解。

您也可以在 维基百科的环境变量 中阅读更多相关信息。

在许多情况下,环境变量如何有用和立即适用并不那么明显。但它们在您开发时会在许多不同的场景中不断出现,所以了解它们是件好事。

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