在 Python 中,你可以通过 os
模块来设置环境变量。环境变量通常用于存储配置设置或敏感信息,比如 API 密钥或数据库密码。
这是设置环境变量的方法。
1. 在Python中设置环境变量你可以通过 os.environ
来设置环境变量。
import os
# 我们设置了一个环境变量
os.environ["MY_VARIABLE"] = "my_value"
# 我们访问这个环境变量
print(os.environ["MY_VARIABLE"]) # 输出结果: my_value
-
这会为当前进程以及它的任何子进程设置环境变量。
- 这些更改在Python脚本退出后不会保存下来。
你可以为特定的代码段临时设定环境变量。
import os
# 保存原始值(如果存在的话)
original_value = os.environ.get("MY_VARIABLE")
# 设定环境变量
os.environ["MY_VARIABLE"] = "temporary_value"
# 利用新值
print(os.environ["MY_VARIABLE"]) # 输出: 'temporary_value'
# 恢复原始值(如有)
if original_value:
os.environ["MY_VARIABLE"] = original_value
else:
del os.environ["MY_VARIABLE"]
3. 使用 subprocess
设置环境变量
当您需要为子程序设置环境变量时,可以这样做。
import subprocess
# 设置环境变量给子进程
result = subprocess.run(
["python", "-c", "import os; print(os.getenv('MY_VARIABLE'))"],
env={"MY_VARIABLE": "subprocess_value", **os.environ},
text=True,
capture_output=True,
)
print(result.stdout.strip()) # 输出结果为: subprocess_value
4. 使用 .env
文件与 python-dotenv
本节介绍如何使用 python-dotenv
库来加载 .env
文件中的环境变量。
在项目中,我们通常管理环境变量,使用 .env
文件和 python-dotenv
库。
安装一下 python-dotenv
pip install python-dotenv # 安装python-dotenv库
创建一个 .env
文件
MY_VARIABLE=my_value # 这里设置了MY_VARIABLE的值为my_value
在 Python 中加载 .env
文件
从 dotenv 模块导入 load_dotenv
import os
# 从 .env 文件中加载环境变量
load_dotenv()
# 获取变量值
print(os.getenv("MY_VARIABLE")) # 输出结果为: my_value
5. 永久设置环境变量
要永久设置环境变量,你需要在你的操作系统设置中配置它们。
Linux/ macOS- 编辑
~/.bashrc
、~/.bash_profile
或~/.zshrc
export MY_VARIABLE="my_value"
注:这行代码将环境变量 MY_VARIABLE
设置为 "my_value"
。
2. 应用更改:
# 源文件~/.bashrc (加载.bashrc配置文件)
Windows
- 在系统属性中打开环境变量设置。
- 在系统变量或用户变量下添加一个新的环境变量。
- 使用
.env
文件: 这将敏感信息从代码库中隔离出来,并使配置管理更加方便。 - 使用
os.getenv
访问: 使用os.getenv("MY_VARIABLE", default_value)
提供默认值,以防变量未设置。 - 避免硬编码: 永远不要在脚本里直接硬编码敏感信息,比如 API 密钥或密码。
使用示例 .env
和 os.getenv
从 dotenv 模块导入 load_dotenv
导入 os。
load_dotenv()
db_user = os.getenv("DB_USER", "default_user")
db_password = os.getenv("DB_PASSWORD", "default_password")
print(f"用户: {db_user}, 密码: {db_password}")
这样能更好地管理环境变量,同时保证安全和灵活性。
如需更多详情或在选择最适合您需求的解决方案时,我们的团队将帮助您做出选择。您可以拨打+1 (647) 491 6566联系我们。