我正在尝试使用一个使用环境变量作为密钥存储的OpenAI库(https://github.com/orhanerday/open-ai),但在运行它时,它似乎没有找到关键。
在本地Windows机器上,我运行了以下命令:setx OPENAI_API_KEY “mykey”
在Linux服务器上,我运行了以下命令:export OPENAI_API_KEY=mykey
在服务器上,当我运行以下命令时,我看到正确的键值打印给我:printenv OPENAI_API_KEY
在我的脚本中,我使用的是$open_ai_key = getenv('OPENAI_API_KEY');,但是我没有得到任何价值。?
任何关于我如何解决这个问题的信息都将不胜感激。谢谢!
发布于 2022-12-04 02:16:22
听起来,您设置的环境变量无法被您正在运行的脚本识别。这有几个可能的原因。
首先,您需要确保在正确的环境中设置了环境变量。运行setx或export命令时,它将设置当前shell会话的环境变量。这意味着该变量只对在运行命令后启动的进程可用。如果您将脚本作为服务或在不同的shell会话中运行,它将无法访问环境变量。
要解决这个问题,可以在设置环境变量的同一个shell会话中运行脚本,也可以在系统上全局设置变量,使其可供所有进程使用。要在Windows上全局设置变量,可以使用带有setx标志的-m命令:
setx -m OPENAI_API_KEY mykey
在Linux上,可以在/etc/environment文件中设置变量:
echo 'OPENAI_API_KEY=mykey' >> /etc/environment
在设置变量之后,您将需要重新启动任何需要使用它以使更改生效的服务或进程。
另一个可能的问题是脚本没有正确地访问环境变量。在代码中,您需要使用getenv()函数来检索环境变量的值。例如:
$apiKey = getenv('OPENAI_API_KEY');
确保脚本使用此函数检索API键,并确保变量名拼写正确。
我希望这能帮到你!如果你还有其他问题,请告诉我。
https://stackoverflow.com/questions/74672366
复制相似问题