[英]Subprocess not retaining all environment variables
我有一个tcsh shell脚本,该脚本设置了所有必要的环境,包括PYTHONPATH
,然后在其末尾运行可执行文件。 我也有一个python脚本,它作为输入发送到shell脚本。 因此,从终端运行以下代码时,效果很好:
path to shell script
path to python script
现在,当我想从子流程中做同样的事情时,就会出现问题。 python脚本无法运行,因为它找不到许多应该通过shell脚本设置的模块。 显然,与运行子进程的父环境或Shell脚本本身相比, PYTHONPATH
最终缺少许多路径! 子进程似乎不尊重shell脚本设置的环境。
我已经尝试过各种方法,但无济于事!
cmd = [shell_script_path, py_script_path] process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=os.environ.copy())
如果没有给env也没有区别!
任何想法如何解决这个问题?
知道子流程会继承所有父流程环境,并且假定它们将在同一环境下运行,从而使Shell脚本不设置任何环境,并对其进行了修复。
这解决了保留的环境,但是现在的问题是,该过程只是挂起! (当它直接从shell运行时不会发生)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.