繁体   English   中英

子流程未保留所有环境变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM