2017-10-12 191 views
0

我尝试从python执行csh脚本(它创建或更新环境变量),但环境变量在返回到shell之后不会更新。 为什么?我该如何解决它?环境变量不会从python更新

subprocess.call('script.csh',shell=True,executable="/bin/csh") 
+1

这不是Python问题。父进程不会从其子进程继承。你甚至不能用shell脚本来完成,除非你编写脚本。 –

+0

我使用tcsh。你什么意思 ?你能给我解决方法吗? @PM 2Ring – Alex

+1

解决方法是让shell脚本设置环境变量,然后执行您的Python脚本,而不是您现在尝试执行的方式。或者,您可以使用'os.environ'在Python中设置它们。 – kindall

回答

0

设置环境变量在python,使用

os.environ['YOUR_VARIABLE'] = "your_value" 

注意环境变量必须是字符串。

解释为什么你想要做什么不能做:

环境变量是在每个进程的内存空间设置。当bash(或者其他shell)运行一个程序时,它使用fork(),它继承了bash的变量,因为它是一个子进程。你想要做的是创建一个子进程,并让他从父子继承,就像@PM 2Ring所说。