上一篇
Python环境变量详解:概念、作用与使用方法 | Python编程指南
- Python
- 2025-08-16
- 1478
Python环境变量详解
全面解析环境变量的概念、作用与使用方法
什么是环境变量?
环境变量是操作系统中存储的键值对数据,用于配置系统行为和应用程序设置。它们存在于操作系统级别,可以被所有运行在该环境中的应用程序访问。
常见环境变量示例
- PATH: 系统查找可执行文件的目录列表
- HOME (Linux/macOS) / USERPROFILE (Windows): 当前用户的主目录
- PYTHONPATH: Python解释器查找模块的路径列表
KEY=VALUE
PYTHONPATH=/usr/lib/python
API_KEY=abc123xyz
PYTHONPATH=/usr/lib/python
API_KEY=abc123xyz
为什么在Python中使用环境变量?
配置管理
将配置信息(如API密钥、数据库凭据)与代码分离,提高代码安全性和可维护性。
环境适配
轻松切换不同环境(开发、测试、生产)的配置,无需修改代码。
安全性
避免将敏感信息(如密码、密钥)硬编码在源代码中,防止泄露。
在Python中使用环境变量
1. 获取环境变量
使用Python内置的os
模块访问环境变量:
import os
# 获取单个环境变量
database_url = os.getenv("DATABASE_URL")
# 获取环境变量,如果不存在则使用默认值
api_key = os.getenv("API_KEY", "default_key_123")
# 获取所有环境变量(返回字典)
all_env_vars = os.environ
print(all_env_vars["PATH"])
# 安全获取环境变量(避免KeyError)
secret = os.environ.get("SECRET_KEY", None)
2. 设置环境变量
在Python中有多种设置环境变量的方式:
import os
# 设置当前进程的环境变量(不影响系统环境)
os.environ["DEBUG_MODE"] = "True"
os.environ["API_ENDPOINT"] = "https://api.example.com"
# 永久设置环境变量(操作系统相关)
# Windows: 使用setx命令
# Linux/macOS: 在~/.bashrc或~/.zshrc中添加 export KEY=value
实际应用示例
数据库连接配置
import os
import psycopg2
# 从环境变量获取数据库配置
db_config = {
"host": os.getenv("DB_HOST", "localhost"),
"port": os.getenv("DB_PORT", "5432"),
"user": os.getenv("DB_USER"),
"password": os.getenv("DB_PASSWORD"),
"database": os.getenv("DB_NAME")
}
# 创建数据库连接
conn = psycopg2.connect(**db_config)
API密钥管理
import os
import requests
# 从环境变量获取API密钥
API_KEY = os.getenv("WEATHER_API_KEY")
API_URL = "https://api.weatherapi.com/v1/current.json"
# 使用API密钥发起请求
params = {"key": API_KEY, "q": "London"}
response = requests.get(API_URL, params=params)
weather_data = response.json()
最佳实践与安全注意事项
安全第一
- 永远不要将敏感信息硬编码在源代码中
- 使用.env文件存储本地开发环境变量,但不要将其提交到版本控制
- 在生产环境中使用安全的密钥管理服务(如AWS Secrets Manager)
使用环境管理工具
- 使用
python-dotenv
库管理.env文件 - 在Docker中使用
--env-file
参数或环境变量 - 使用配置管理工具如Ansible、Chef或Puppet
命名规范
- 使用大写字母和下划线命名环境变量(如DB_HOST)
- 为不同环境使用前缀(如DEV_API_KEY, PROD_API_KEY)
- 提供有意义的默认值,但不要用于敏感信息
本文由LiaoTan于2025-08-16发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20258251.html
发表评论