簡體   English   中英

Python子進程:子進程完成后獲取環境

[英]Python subprocess: Get environment after subprocess completed

我們有一個帶有 shell 腳本的工具,它設置運行該工具所需的環境變量。 這是相當復雜的不同腳本鏈,可以確定一堆東西並導出/設置 env。

然后,每次我們想要調用工具本身時,我們都需要該環境。

理想情況下,我們將能夠做這樣的事情:

completed_script = subprocess.run("the_settings_script.bat")
[...]
subprocess.run(["some", "other", "call"], env=completed_script.env)

那顯然行不通。 在運行子進程后還有另一種恢復環境的好方法嗎? 我們當然可以在實際工具調用之前在每個subprocess.run()調用中運行腳本,但這有點低效。

不,沒有便攜式方式。 在任何現代操作系統中,父環境都傳遞給子進程,但子進程絕不能更改其父環境。 它曾經在舊的 MS/DOS 中是可能的,並且只能使用 .com 類型的程序,因為父環境的地址存儲在子進程中的一個眾所周知的地址,但我不知道 Windows 或任何類 Unix 系統有這樣的技巧.

這是在啟動 Python 解釋器之前設置環境的最佳方式。 這樣,更改的環境將傳遞給所有子流程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM