使用参数替换将 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')

在一个pythonshell,我运行:

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 的正确值。