使用参数替换将 bash 环境变量集读取到 Python 变量中
Reading bash environment variable set using parameter substitution into Python variable
我的 .env
文件中有以下环境变量:
DT="2019-01-01"
X=${DT//-/}
已使用 Bash 的参数替换设置变量 X
,使用 ${parameter//pattern/string}
格式替换所有出现的地方(文档 here)。
现在,为了将环境变量读入 Python,我在文件 config.py
:[=29 中创建了一个 Python class Config
=]
from dotenv import find_dotenv, load_dotenv
import os
class Config:
def __init__(self):
load_dotenv(find_dotenv())
self.X = os.environ.get('X')
在一个python
shell,我运行:
In [1]: from config import Config
In [2]: c = Config()
In [3]: c.X
Out[3]: ''
这里 c.X
是一个空字符串 ''
,我希望它是 '20190101'
。
如何将环境变量的正确值加载到 python 变量中?
编辑:当我在 bash 脚本中键入 echo $X
时,它会打印出正确的值。例如,一个 bash 脚本 sample.sh
:
#!/bin/bash
source .env
echo $X
当运行时,我得到:
$ sh sample.sh
20190101
Dotenv不使用Bash;它在内部解析文件。见 dotenv GitHub page.
直接使用DT
代替:
self.X = os.environ.get('DT').replace('-', '')
我以这种方式在我的 .env
文件中添加了一个 export
:
DT="2019-01-01"
export X=${DT//-/}
这使我能够在 Python 中获得 c.X
的正确值。
我的 .env
文件中有以下环境变量:
DT="2019-01-01"
X=${DT//-/}
已使用 Bash 的参数替换设置变量 X
,使用 ${parameter//pattern/string}
格式替换所有出现的地方(文档 here)。
现在,为了将环境变量读入 Python,我在文件 config.py
:[=29 中创建了一个 Python class Config
=]
from dotenv import find_dotenv, load_dotenv
import os
class Config:
def __init__(self):
load_dotenv(find_dotenv())
self.X = os.environ.get('X')
在一个python
shell,我运行:
In [1]: from config import Config
In [2]: c = Config()
In [3]: c.X
Out[3]: ''
这里 c.X
是一个空字符串 ''
,我希望它是 '20190101'
。
如何将环境变量的正确值加载到 python 变量中?
编辑:当我在 bash 脚本中键入 echo $X
时,它会打印出正确的值。例如,一个 bash 脚本 sample.sh
:
#!/bin/bash
source .env
echo $X
当运行时,我得到:
$ sh sample.sh
20190101
Dotenv不使用Bash;它在内部解析文件。见 dotenv GitHub page.
直接使用DT
代替:
self.X = os.environ.get('DT').replace('-', '')
我以这种方式在我的 .env
文件中添加了一个 export
:
DT="2019-01-01"
export X=${DT//-/}
这使我能够在 Python 中获得 c.X
的正确值。