环境变量¶
提示
如果你已经了解什么是“环境变量”以及如何使用它们,可以跳过此节。
环境变量(Environment Variable,也称为“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")
然后你可以这样运行该 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\ScriptsC:\Program Files\Python312C:\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 中使用它们有了基本的了解。
你也可以在 维基百科关于环境变量的条目 中阅读更多内容。
在很多情况下,环境变量的用处和适用场景并不是一眼就能看出来的。但它们在开发过程中会不断出现在各种场景中,所以了解它们很有必要。
例如,你将在下一节关于 虚拟环境 的内容中用到这些信息。