簡體   English   中英

Python2.7 subprocess32:如何在通過Popen執行的兩個腳本之間共享環境?

[英]Python2.7 subprocess32: how to share environment between two scripts executed via Popen?

我有2個腳本:1.配置一個,可修改大約20個環境變量並在其中運行另一個小腳本,以及2.該進程使用由script1設置的環境變量來執行某些操作。

我試圖通過Python2.7 subprocess32.Popen()一個接一個地執行它們,並將相同的env變量傳遞給兩個Popen。 沒有成功,script1的環境對於script2只是空的

import os
import subprocess32 as subprocess
my_env = os.environ
subprocess.Popen(script1, env=my_env)
subprocess.Popen(script2, env=my_env)

我實際上如何在兩個腳本之間共享環境?

當第一個子流程退出時,對其環境的更改將消失。 此類更改僅傳播到其自己的子流程。 您需要執行以下操作:

import shlex

subprocess.Popen(". {}; {}".format(shlex.quote(script1),
                                   shlex.quote(script2)), 
                 shell=True)

但是與往常一樣,使用shell=True會帶來安全問題。

我認為問題出在my_env=my_env ,第二個參數需要是env

my_env = os.environ
subprocess.Popen(script1, env=my_env)
my_env = os.environ
subprocess.Popen(script2, env=my_env)

暫無
暫無

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

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