Чтение переменной окружения bash с использованием подстановки параметров в переменную Python - PullRequest
1 голос
/ 27 марта 2019

В моем файле .env есть следующие переменные среды:

DT="2019-01-01"
X=${DT//-/}

Переменная X была установлена ​​с помощью замены параметров Bash, используя формат ${parameter//pattern/string} для замены всех вхождений (Документация здесь ).

Теперь, чтобы прочитать переменные окружения в Python, я создал класс Python Config в файле config.py:

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?

Редактировать: Когда я набираю echo $X в bash-скрипте, он печатает правильное значение. Например, скрипт bash sample.sh:

#!/bin/bash
source .env

echo $X

При запуске я получаю:

$ sh sample.sh
20190101

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Я добавил export в свой .env файл следующим образом:

DT="2019-01-01"
export X=${DT//-/}

Это позволило мне получить правильное значение c.X в Python.

0 голосов
/ 27 марта 2019

Dotenv не использует Bash;он анализирует файл внутри.См. Страницу dotenv GitHub .

Вместо прямого использования DT:

self.X = os.environ.get('DT').replace('-', '')
...