python os.getenv 看不到 ~/.profile 中定义的变量
Posted
技术标签:
【中文标题】python os.getenv 看不到 ~/.profile 中定义的变量【英文标题】:python os.getenv can't see variables defined in ~/.profile 【发布时间】:2021-11-03 20:02:26 【问题描述】:我正在尝试为我的 python 项目在 DigitalOcean droplet 上设置一些环境变量。
我把它们放到~/.profile
文件中。现在看起来像这样:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
PRODUCTION=1
droplet 重置后,我尝试在 python
脚本中获取 PRODUCTION
,但它返回 None。
>>> import os
>>> os.getenv('PRODUCTION')
>>>
我做错了什么?如果不是.profile
,我应该使用什么文件来永久设置这些变量?
【问题讨论】:
你试过export PRODUCTION=1
吗?
正如@nic3500 暗示的那样,您还没有将shell 变量导出到环境中。运行 somevar=1
创建一个 shell 变量;它不在环境中,对子进程不可见。如果你明确地export
它,你只会得到一个环境变量。
【参考方案1】:
因为我也花了一些时间搜索所以发布答案
正如两个 cmets 所述,您需要在 ~/profile
文件中专门导出变量
# Use this
export MYVAR=1
# NOT this
MYVAR=1
【讨论】:
以上是关于python os.getenv 看不到 ~/.profile 中定义的变量的主要内容,如果未能解决你的问题,请参考以下文章
Python os.getenv() 在设置 Windows 环境变量时返回 None
os.getenv 和 os.environ.get 的区别