我有一个脚本,想做以下事情:
1.我用
from subprocess import Popen
emsdk_path = os.path.join(os.getenv('EMSDK'))
emsdk_bat = os.path.join(emsdk_path, 'emsdk.bat')
Popen('{0} activate latest'.format(emsdk_bat)).communicate()还有2个人。
Popen(['emcmake', 'cmake', '-DCMAKE_BUILD_TYPE=Release', '-G "Ninja" ..'], shell=True).communicate()第一个调用成功完成,但问题是接下来的调用是一个不同的Popen调用,它忘记了有关emscripten的所有内容,因为环境再次被重置。
是否有方法从一个Popen调用中提取环境状态并在另一个调用中使用它?
我知道env参数在Popen中,但问题是emsdk.bat正在更新环境,我不知道如何将它带回到python中。
我尝试过的另一件事是在第一个进程中将环境写入文件。
Popen('{0} activate latest && echo %PATH% > env.txt'.format(emsdk_exe), shell=True).communicate()但是env.txt仍然包含旧的环境。
发布于 2019-09-12 22:07:55
如果使用bash,可以在一个popen调用中使用";“作为分隔命令的参数。
Popen(['{0} activate latest'.format(emsdk_bat),";",'emcmake', 'cmake', '-DCMAKE_BUILD_TYPE=Release', '-G "Ninja" ..'], shell=True).communicate()这只在不需要这两种输出的情况下才能工作,因为它只返回最后的输出,但它将保留第二个命令的实例。
https://stackoverflow.com/questions/57908331
复制相似问题