其他

MacBook 安全储存代码环境变量Tips

前言🔖


在 Mac 中通过系统环境变量存储 API Key,代码中用 os.getenv() 读取,是兼顾「安全(避免硬编码泄露)」「规范(符合开发最佳实践)」「灵活(多环境切换)」的最优方案。

核心原理

  • 把 API Key 存入 Mac 系统环境变量(永久生效),而非硬编码在代码中;
  • 代码通过 os.getenv("变量名") 读取环境变量值,实现「代码与密钥分离」;
  • 优势:密钥不随代码提交 / 分享泄露,换密钥 / 多项目共用时无需修改代码。

  

Mac 终端配置永久环境变量(分 Shell 版本)🔖


Mac 终端核心分 zsh(10.15+ 标配)和 bash(旧版),需根据自身 Shell 选择配置文件,先执行以下命令确认 Shell 类型:

# 查看当前终端 Shell 类型
echo $SHELL
# 输出 /bin/zsh → zsh(主流);输出 /bin/bash → bash(旧版)

🔹场景 1:zsh(MacOS 10.15+ 推荐,占 99% 场景)

# 1. 打开 zsh 核心配置文件(无则自动创建)
open ~/.zshrc

若提示不存在用touch 命令创建空的 .zshrc 文件(推荐)
touch ~/.zshrc

# 2. 在文件末尾添加以下内容(替换为真实 API Key)
export DASHSCOPE_API_KEY="sk-7x x x x"

# 3. 保存文件(Command+S),执行以下命令让配置立即生效
source ~/.zshrc

# 4. 验证配置是否成功(输出密钥则生效)
echo $DASHSCOPE_API_KEY

  

🔹场景 2:bash(MacOS 10.14 及以下)

# 1. 打开 bash 登录配置文件
open ~/.bash_profile

# 2. 在文件末尾添加密钥配置
export DASHSCOPE_API_KEY="sk-7x x x x"

# 3. 生效配置并验证
source ~/.bash_profile
echo $DASHSCOPE_API_KEY

# 【可选】解决 bash 新建终端不生效问题(关键)
# bash 默认仅「登录式 Shell」加载 .bash_profile,需添加以下内容让每次打开终端都生效
echo "source ~/.bash_profile" >> ~/.bashrc
source ~/.bashrc

  

代码中读取环境变量🔖


修改原代码,替换硬编码的 API Key 为 os.getenv() 读取,并添加「空值兜底提示」(避免密钥未配置时程序崩溃):

from openai import OpenAI
import os  # 确保导入 os 模块

# 核心:从环境变量读取 API Key,添加空值校验
api_key = os.getenv("DASHSCOPE_API_KEY")
if not api_key:
    raise ValueError(
        "❌ 未找到环境变量 DASHSCOPE_API_KEY!\n"
        "解决步骤:\n"
        "1. 终端执行 open ~/.zshrc(zsh)或 open ~/.bash_profile(bash)\n"
        "2. 添加 export DASHSCOPE_API_KEY='你的密钥'\n"
        "3. 执行 source ~/.zshrc 或 source ~/.bash_profile 生效"
    )

# 初始化 OpenAI 客户端(对接阿里云百炼)
client = OpenAI(
    api_key=api_key,  # 读取环境变量的密钥
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

🔹关键注意事项

  1. 变量名大小写敏感DASHSCOPE_API_KEYdashscope_api_key 是两个不同变量,代码与终端配置需完全一致;
  2. 特殊字符处理:若密钥包含空格 / 特殊符号,配置时需用双引号包裹(如 export KEY="sk-7x x x x");
  3. 多环境兼容:若需兼容 zsh 和 bash,可将密钥写入 ~/.profile(通用配置文件),并在 .zshrc.bash_profile 中添加 source ~/.profile
  4. 安全兜底:代码中必须添加空值校验,避免因环境变量未配置导致程序静默失败。

  

补充:临时生效方案(适合测试 / 临时使用)🔖


若不想配置永久环境变量,可在运行代码前,在终端执行以下命令(仅当前终端会话生效,关闭终端后失效):

# 临时设置环境变量
export DASHSCOPE_API_KEY="sk-7x x x x"

# 运行 Python 脚本(示例)
python your_script.py

  

总结🔖


  • 存储方式:Mac 中通过 .zshrc(主流)或 .bash_profile 配置 export DASHSCOPE_API_KEY="密钥",执行 source 生效;
  • 读取方式:代码中用 os.getenv("DASHSCOPE_API_KEY") 读取,添加空值校验避免异常;
  • 核心优势:密钥与代码分离,既避免泄露风险,又提升多环境切换的灵活性,是企业级开发的标准做法。