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)
该蟒蛇-dotenv包能为你做繁重的工作:
from dotenv import load_dotenv
load_dotenv(dotenv_path='OCSSW_bash.env')
Run Code Online (Sandbox Code Playgroud)