在 python 脚本中调用 bash 配置文件来设置环境变量
calling bash configuration files in python script to setup environmental variables
我有一个文本文件包含属于可以在 bash
脚本中调用的一堆命令的所有路径,它被称为 progs.ini
。
通常当我想在我的 bash 脚本中调用这个配置文件时,我使用这个命令
. progs.ini
progs.ini 包含如下内容:
BIN=/bin/linux_64/
P_ANALYSE=${BIN}/analyse
NPARA=1
现在我想在 python 中使用我的部分代码,我尝试按如下方式使用此命令:
import subprocess as S
import os
CMD='. progs.ini'
S.call([CMD],shell=True)
它没有 return 任何错误消息,但它无法识别 progs.ini
中定义的变量
>>os.system('echo ${BIN}')
0
好吧,这不是关于设置一些类似于 this problem 的环境变量。我想使用配置文件设置一些变量。
您似乎在使用 Linux。在那种情况下,我倾向于在您的 ini 文件末尾放置一个 cat /proc/$$/environ
。这将以易于解析的格式打印出所有键值对。应该这样做:
s = os.popen(". whatever.ini && cat /proc/$$/environ").read()
env_vars = {x[:x.find("=")]:x[x.find("=")+1:] for x in s.split("[=10=]")[:-1]}
已测试。那没有用,但这样做了:
s = os.popen(". ./whatever.ini && set").read()
env_vars = {x[:x.find("=")]:x[x.find("=")+2:-1] for x in s.split("\n")[:-1]}
print env_vars['hello']
我有一个文本文件包含属于可以在 bash
脚本中调用的一堆命令的所有路径,它被称为 progs.ini
。
通常当我想在我的 bash 脚本中调用这个配置文件时,我使用这个命令
. progs.ini
progs.ini 包含如下内容:
BIN=/bin/linux_64/
P_ANALYSE=${BIN}/analyse
NPARA=1
现在我想在 python 中使用我的部分代码,我尝试按如下方式使用此命令:
import subprocess as S
import os
CMD='. progs.ini'
S.call([CMD],shell=True)
它没有 return 任何错误消息,但它无法识别 progs.ini
>>os.system('echo ${BIN}')
0
好吧,这不是关于设置一些类似于 this problem 的环境变量。我想使用配置文件设置一些变量。
您似乎在使用 Linux。在那种情况下,我倾向于在您的 ini 文件末尾放置一个 cat /proc/$$/environ
。这将以易于解析的格式打印出所有键值对。应该这样做:
s = os.popen(". whatever.ini && cat /proc/$$/environ").read()
env_vars = {x[:x.find("=")]:x[x.find("=")+1:] for x in s.split("[=10=]")[:-1]}
已测试。那没有用,但这样做了:
s = os.popen(". ./whatever.ini && set").read()
env_vars = {x[:x.find("=")]:x[x.find("=")+2:-1] for x in s.split("\n")[:-1]}
print env_vars['hello']