最近在学chatgpt api编程,需要在python脚本里调用openai的sercet key。
import openai
openai.api_key = "xxxx"
//省略若干行
这种脚本肯定不能上传代码仓库或者发给别人,否则会有sercet key泄漏的风险。
于是想把key写在环境变量里,通过脚本读取环境变量的方式来获取key,代码就变成了下面这种
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
现在问题来了,在mac环境,变量OPENAI_API_KEY={key}应该写在哪个变量里?
环境变量分为全局变量和用户变量,用户变量的配置文件由具体shell应用来决定,见导图
sercet key变量安全性要求高,应该把它设置在用户变量里,具体用户变量的哪个文件就需要判断shell是哪个应用,可以通过命令行来判断
> echo $0
结果会返回当前shell应用,前面加"-", 如
-zsh
-bash
当前我用的zsh,就写在~/.zshrc里,直接写key=value,不用在前面加export
重开终端或者执行source让变量生效。
source ~/.zshrc
echo $OPENAI_API_KEY
返回: sk-xxx
每次打开终端查看该变量都能获取到,则配置成功。