2017-10-12 146 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所說。