环境变量¶
提示
如果你已经了解“环境变量”是什么以及如何使用它们,请随意跳过此部分。
环境变量(也称为“**环境变量**”)是存在于 **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 中使用它们有一个基本的了解。
您还可以在环境变量维基百科中了解更多关于它们的知识。
在许多情况下,环境变量如何立即变得有用和适用并不明显。但它们在您开发时会不断出现在许多不同的场景中,因此了解它们很重要。
例如,您将在下一节关于虚拟环境中需要这些信息。