python - 从 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。知道为什么,以及如何解决它吗?
谢谢
解决方案
它仅取决于您从何处运行代码:
- 如果代码运行的进程设置了变量,则不应该
None
- 如果你在另一个进程中运行代码,你会得到
None
解释:
每个进程 ID 都有自己的环境,存储在/proc/<pid>/environ
文件中,其中存储了本地非导出变量。一旦进程停止,这条路径就会被删除。
完成这项工作的唯一方法是在启动程序之前在 shell 中导出变量,或者运行YOUTUBE_API=someRandomString python <your python file>
推荐阅读
- reactjs - npm run build 不起作用 - 没有生成生成,脚本停止而不打印任何内容
- button - 如何在颤动中使用 2 个按钮控制抽屉和 endDrawer
- azure - 长时间运行的 Azure 函数返回 502,但该函数实际上已经完成了工作
- firebase - 如果有firebase用户的信息,我想对passwordhash字段进行加密,我从firebase收到什么json
- php - 如何解决在 LiteSpeed 服务器上找不到 PHP 页面
- abap - 像整数数组一样声明和使用内部表
- compiler-errors - Ionic 4 Admob 集成错误:java.lang.NoClassDefFoundError:(解析失败:Lcom/google/android/gms/internal/zzur;)
- c++ - 如何打印与特定值对应的元素的总和?
- python - TypeError : "errorMessage": "参数应该是类似字节的对象或 ASCII 字符串,而不是 'Binary'",
- if-statement - 如何比较球拍中的字符串