我的.env
文件中有以下环境变量:
DT="2019-01-01"
X=${DT//-/}
变量X
是使用 Bash 的参数替换设置的,使用 ${parameter//pattern/string}
格式替换所有出现的情况(此处的文档(。
现在,为了将环境变量读入 Python 中,我在文件config.py
中创建了一个 Python 类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
壳中,我运行:
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
我以这种方式在.env
文件中添加了export
:
DT="2019-01-01"
export X=${DT//-/}
这使我能够在Python中获得正确的c.X
值。
Dotenv 不使用 Bash;它在内部解析文件。请参阅 dotenv GitHub 页面。
直接使用 DT
代替:
self.X = os.environ.get('DT').replace('-', '')