在命令行(CMD)环境中运行 Python 脚本时,经常需要读取系统或用户自定义的环境变量。环境变量是操作系统中存储全局配置信息的键值对,例如 PATH
、HOME
或自定义的 API_KEY
。Python 提供了多种方式读取环境变量,本文将详细讲解如何通过代码实现这一功能,并涵盖常见问题的解决方案和最佳实践。
环境变量是操作系统中用于配置程序运行环境的全局变量。它们可以在命令行、脚本或程序中被访问和修改。常见的环境变量包括:
MY_VAR=123
)。PYTHONPATH
指定 Python 模块的搜索路径。Python 提供了 os
模块来操作环境变量,其中最常用的方法是 os.environ
和 os.getenv
。
os.environ
os.environ
是一个字典(dict
),包含所有当前进程的环境变量。
import os
# 读取所有环境变量
print("所有环境变量:", os.environ)
# 读取特定环境变量
path = os.environ.get("PATH")
print("PATH 环境变量:", path)
# 检查环境变量是否存在
if "MY_VAR" in os.environ:
print("MY_VAR 存在,值为:", os.environ["MY_VAR"])
else:
print("MY_VAR 未设置")
所有环境变量: environ({'PATH': '/usr/bin:/bin', 'HOME': '/home/user', ...})
PATH 环境变量: /usr/bin:/bin
MY_VAR 未设置
os.environ["VARIABLE"]
访问不存在的变量会抛出 KeyError
异常。os.environ.get("VARIABLE", "默认值")
避免异常。os.getenv
os.getenv
是 os.environ.get
的简化方法,直接返回指定变量的值。
import os
# 读取环境变量并设置默认值
my_var = os.getenv("MY_VAR", "default_value")
print("MY_VAR 的值:", my_var)
MY_VAR
未设置):MY_VAR 的值: default_value
在 Python 脚本运行前,需要在 CMD 中设置环境变量。以下是不同操作系统的设置方法:
在 CMD 中使用 set
命令:
set MY_VAR=Hello_World
python script.py
通过系统属性界面或使用 setx
命令:
setx MY_VAR "Hello_World"
在终端中使用 export
命令:
export MY_VAR=Hello_World
python3 script.py
将 export
命令添加到 ~/.bashrc
或 ~/.zshrc
文件中。
以下是一个完整的 Python 脚本示例,演示如何读取 CMD 中设置的环境变量:
script.py
)import os
# 读取环境变量并设置默认值
my_var = os.getenv("MY_VAR", "default_value")
path_var = os.getenv("PATH", "未找到 PATH")
# 输出结果
print(f"MY_VAR 的值: {my_var}")
print(f"PATH 的值: {path_var}")
set MY_VAR=Custom_Value
python script.py
MY_VAR 的值: Custom_Value
PATH 的值: C:\Windows\system32;C:\Program Files\Python39\Scripts\;...
os.pathsep
处理路径分隔符:import os
paths = os.getenv("PATH", "").split(os.pathsep)
print("PATH 分割后的路径:", paths)
Python 可临时修改当前进程的环境变量:
import os
# 修改环境变量
os.environ["NEW_VAR"] = "New_Value"
print("NEW_VAR:", os.getenv("NEW_VAR"))
注意:修改仅对当前进程及其子进程生效,不会影响系统全局设置。
删除当前进程的环境变量:
import os
if "TEMP_VAR" in os.environ:
del os.environ["TEMP_VAR"]
print("TEMP_VAR 已删除")
某些环境变量可能依赖其他变量(如 PYTHONPATH
)。通过 os.path.expandvars
解析嵌套变量:
import os
# 假设 HOME=/home/user
path = os.path.expandvars("$HOME/.config")
print("解析后的路径:", path)
使用默认值:避免因环境变量缺失导致程序崩溃。
db_password = os.getenv("DB_PASSWORD", "local_db_password")
加密敏感信息:不要在代码中硬编码敏感数据,优先通过环境变量传递。
跨平台兼容性:使用 os.path
模块处理路径,避免硬编码斜杠(/
或 \
)。
测试环境变量:在开发阶段通过 .env
文件模拟环境变量:
from dotenv import load_dotenv
load_dotenv() # 从 .env 文件加载环境变量
通过 os.environ
和 os.getenv
,Python 可以高效读取 CMD 或系统设置的环境变量,为程序提供灵活的配置能力。掌握环境变量的读取、修改和跨平台处理方法,不仅能提升开发效率,还能增强程序的安全性和可维护性。