如何从python脚本中的.env文件设置环境变量?

Kev*_*Lee 6 python linux bash shell environment-variables

在 Ubuntu bash shell 中,我可以使用命令行“source”(例如:)从 .env 文件设置环境变量source $OCSSWROOT/OCSSW_bash.env

source不是python中的函数。那么,如何从 python 中的 .env 文件设置环境变量?

'l2gen' 是 SeaDAS 的命令行程序,由 NASA 支持,用于处理海洋卫星数据。我可以在 bash shell 中运行它。现在,更多的程序需要用 python 脚本编码,'l2gen' 是程序之一。

但是需要在python脚本中重新设置环境变量。根据谷歌搜索结果,我喜欢在python中设置环境变量的一些方法。但缺少有关 .env 文件的信息。

在 Linux bash shell 中,我通过 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
Run Code Online (Sandbox Code Playgroud)

其中: 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)
Run Code Online (Sandbox Code Playgroud)

其中: 'l2gen -h' 是一个可以在 bash shell 中工作的程序。

执行python脚本,然后报错:

/bin/sh: 1: l2gen: not found
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 8

蟒蛇-dotenv包能为你做繁重的工作:

from dotenv import load_dotenv
load_dotenv(dotenv_path='OCSSW_bash.env')
Run Code Online (Sandbox Code Playgroud)