为什么会这样子流程.Popen运行不同的Python版本cmd.exe?

2024-06-02 06:45:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它不会在Nuke的内置Python解释器中运行,所以我尝试通过系统的Python来启动它。我在用子流程.Popen但它仍然不会在子进程内运行(缺少模块),即使它在命令提示符下运行良好(命令提示符)你知道吗

我认为问题是,我只是不知道我的子进程是在什么环境下启动的。它甚至没有运行预期的Python版本。你知道吗

在命令提示符地址:

C:/Python27/python.exe -V

> Python 2.7.16

在核武器方面:

import subprocess as sub
print sub.Popen("C:/Python27/python.exe -V", stderr=sub.PIPE).communicate()[1]

# Result: Python 2.7.13

print sub.Popen('C:/Python27/python.exe -c 
                "import sys;print(sys.executable)"',
                stdout=sub.PIPE).communicate()[0]

# Result: C:\Python27\python.exe

这个较低版本的Python从何而来?Nuke的内置Python也是2.7.13,这可能不是巧合,但是为什么Popen会运行它而不是我指定的.exe呢?你知道吗

注意:无论我给出shell=True还是shell=False,结果都是一样的


Tags: import脚本进程sysresultshellexe内置