【发布时间】:2013-10-26 01:58:05
【问题描述】:
我确实有一个 setenv.sh 脚本,它在其他几个脚本的开头被调用,其中大多数是 bash 脚本。显然这个脚本确实设置了一些环境变量,这些变量是这些脚本以后使用的。
现在,问题是我想在一些 python 脚本中实现相同的行为,我发现如果你运行 setenv,python 脚本的环境不会更新。
因为我不想创建另一个脚本,它首先调用setenv.sh 和其他这个 myscript.py --- 我正在寻找一种方法来说服 python 加载这些变量(解析 seteve.h 不是选项...因为它更复杂)。
【问题讨论】:
-
您需要提供更多详细信息,或者更好地显示 shell 脚本。你是如何设置变量的?
setenv.sh的运行情况如何?然后你是如何运行其他脚本的? -
我使用
os.system()调用 setenv 但根据我阅读的内容,没关系,因为其他方法也会启动一个新进程,该进程将拥有父进程 (py) env 的副本.这意味着当孩子结束时,我将丢失 env 更改。当我从 bash 脚本执行此操作时,它会起作用(只要他们使用 export = AAA=AAAVALUE)。 -
您不能通过执行外部脚本来影响 Python 进程的环境。该脚本只能影响它自己的环境,而不是生成它的 Python 进程的环境。
-
@chepner ...我的问题是关于从中获取这些变量...我的价值观。一种丑陋的方法是执行“setenv.sh & echo VAR1”并解析输出......非常丑陋,尤其是如果您要加载大约 10-15 个变量。
标签: python bash environment-variables