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

时间:2019-06-10 04:52:54

标签: python linux bash shell environment-variables

在Ubuntu bash shell中,我可以使用命令行“源”(例如:source $OCSSWROOT/OCSSW_bash.env)从.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

其中: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 shell中运行的程序。

执行python脚本,然后出现错误:

/bin/sh: 1: l2gen: not found

1 个答案:

答案 0 :(得分:1)

python-dotenv软件包可以为您完成繁重的工作:

from dotenv import load_dotenv
load_dotenv(dotenv_path='OCSSW_bash.env')