环境变量¶
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")
然后你可以调用这个 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
你可以在 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
程序并运行它。
这大致相当于输入:
$ /opt/custompython/bin/python
系统会在C:\opt\custompython\bin\python
中**找到**python
程序并运行它。
这大致相当于输入:
$ C:\opt\custompython\bin\python
这些信息在学习虚拟环境时会很有用。
结论¶
通过这些内容,你应该对**环境变量**是什么以及如何在Python中使用它们有了基本的了解。
你还可以在环境变量的维基百科中了解更多信息。
在许多情况下,环境变量的用处和适用性并不十分明显。但当你进行开发时,它们会在许多不同的场景中不断出现,因此了解它们是很有好处的。
例如,在下一节关于虚拟环境的内容中,你将需要这些信息。