首页 > 解决方案 > 从 python 访问 macOS 中的环境变量

问题描述

我没有 .bash_profile 文件,所以我创建了一个,其中唯一的一行是:

YOUTUBE_API=someRandomString

在我的 .zshrc 文件中,第一行是这样的:

source ~/.bash_profile

从命令行我可以运行这个:

echo $YOUTUBE_API

这给了我一个正确的输出(我的 API 密钥)。

但是当我尝试在 Python 中执行此操作时,它返回None

import os
print(os.environ.get('YOUTUBE_API'))

我正在运行 python 版本 3.9.4。知道为什么,以及如何解决它吗?

谢谢

标签: pythonbashmacosenvironment-variableszshrc

解决方案


它仅取决于您从何处运行代码:

  • 如果代码运行的进程设置了变量,则不应该None
  • 如果你在另一个进程中运行代码,你会得到None

解释:

每个进程 ID 都有自己的环境,存储在/proc/<pid>/environ文件中,其中存储了本地非导出变量。一旦进程停止,这条路径就会被删除。

完成这项工作的唯一方法是在启动程序之前在 shell 中导出变量,或者运行YOUTUBE_API=someRandomString python <your python file>


推荐阅读