Как установить переменную среды из .env файла в скрипте Python? - PullRequest
2 голосов
/ 10 июня 2019

В оболочке Ubuntu bash я могу установить переменную среды из файла .env с помощью командной строки «source» (пример: source $OCSSWROOT/OCSSW_bash.env).

Но source не является функцией в Python. Итак, как установить переменную окружения из файла .env в python?

'l2gen' - это программа командной строки SeaDAS, которая поддерживается НАСА для обработки данных со спутников океана. Я могу запустить его в оболочке bash. теперь больше программ нужно кодировать с помощью скрипта Python, а 'l2gen' - это программа.

Но переменная окружения должна быть снова установлена ​​в скрипте Python. Согласно результатам поиска Google, я нашел какой-то метод для установки переменной окружения в python. Но не хватает информации о файле .env.

в оболочке Linux bash я устанавливаю переменную окружения с помощью vim и source:

    vim .profile
    export OCSSWROOT=[SeaDAS_install_dir]/ocssw (adding this in the profile 
                                                 file and then save/exit)
    source $OCSSWROOT/OCSSW_bash.env

где: SeaDAS_install_dir - каталог, в который я установил программное обеспечение SeaDAS.

Я пытаюсь добавить переменную среды следующим образом:

import subprocess
if __name__=='__main__':
     l2cmdtest = 'l2gen -h'
     new_env = os.environ.copy()
     new_env['OCSSWROOT'] = '/usr/local/seadas-7.5.3/ocssw'
     new_env['OCSSWROOT'] = 'OCSSWROOT/OCSSW_bash.env'
     eturnCodetest = subprocess.call(l2cmdtest, shell=True)

где: 'l2gen -h' - программа, которая может работать в оболочке bash.

выполнение скрипта Python, а затем ошибка:

/bin/sh: 1: l2gen: not found

1 Ответ

1 голос
/ 10 июня 2019

Пакет python-dotenv может сделать тяжелую работу за вас:

from dotenv import load_dotenv
load_dotenv(dotenv_path='OCSSW_bash.env')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...