我需要用python执行几个shell脚本,一些脚本会导出环境参数,所以我需要在同一个进程中执行它们,否则,其他脚本无法看到新的环境参数
总之,我想让shell脚本改变python进程的环境 所以我不应该使用子进程,任何想法如何实现它?
答案 0 :(得分:1)
如果你创建一个'master'shell脚本,它会按顺序执行所有其他脚本怎么办?这样,您只需自己创建一个子流程,并且各个脚本将共享相同的环境。
但是,如果您想将脚本执行与Python代码交错,那么您可能必须让每个脚本在退出之前将其环境回显到stdout,解析它,然后将其传递给下一个脚本(子进程) .Popen()接受 env 参数,这是一个地图。)
答案 1 :(得分:1)
不,你不能同时在同一个进程中运行多个程序(bash,python)。
但是你可以使用bash中的exec
或python中的一个exec命令(如os.execve
)依次运行它们。有几件事情在“exec边界”中存在,其中一个是环境块。所以在每个bash脚本中你exec
下一个,最后exec
你的python。
您也可以考虑使用类似命名管道的IPC机制在进程之间传递数据。
我恭敬地建议你再看看你的设计。你为什么混合使用bash和python?它只是重用代码吗?即使你管理了这个,你也会以一个真正的混乱结束。坚持使用一种语言通常更容易。