這個主題有很多問題,但不幸的是他們沒有解決我的問題。在Python中設置環境變量
我有一個shell腳本,其目的只是設置環境變量(我們稱之爲env.sh
)。第二個shell腳本是源程序env.sh
的主程序腳本,並使用在此處定義的變量。當兩者都是bash腳本時,這工作正常。
我有問題,我嘗試用python程序替換主shell腳本。這個python程序也依賴於由env.sh
設置的那些環境變量。
在啓動任何使用這些環境變量的例程之前,我可以怎樣在python中輸入env.sh
?
我必須運行
bash -c source env.sh
與模塊子進程。但是,如果我理解正確,這不起作用,因爲變量是在調用python程序的子進程中設置的,因此在父進程中不可用。它是否正確?類似的解決辦法是使用
bash -c source env.sh && env
和閱讀的env
在python輸出,遍歷列表,並寫入os.environ
。但是這種方法會再次寫入每個變量,即使它已經被定義。如果有很多變數呢?我能想到的最後一個解決方案是讀取並解析
env.sh
文件並設置我可以找到的變量。一個問題是,在一些env.sh
出口嵌套,悲風:export SOMETHING=$FOO/Bar
這可能會變得複雜正確解析。
還有另一種方法,我還沒有找到或沒有想到?
「python中的source env.sh」 - 問題就在這裏。爲什麼不在環境變量已經設置的時候執行python腳本? –
我認爲這將是一種安全措施,如果沒有定義需要的環境變量,則不會退出程序。相反,我從文件中讀取它們並在繼續執行程序之前自行設置它們。這就是在shell腳本中完成的。 – ap0
不要直接調用python腳本,使用包裝器。 –