子进程Popen运行python命令

时间:2018-08-30 16:37:41

标签: python python-3.x subprocess popen

我需要在Popen中运行python命令。问题是命令NEEDS必须在python3中运行,并且我需要它具有可移植性,这意味着我不能真正针对每种情况使用python3别名...

我有一台计算机,其中python是正确的版本,而其他计算机中,正确的版本是python3。我试图在文件的开头插入#!/usr/bin python3,然后以python的身份运行,但是没有用。

我无法修改环境变量以将python3更改为python。我想知道是否有一种方法可以仅在Popen命令中检查我需要使用的方法,还是将python3更改为python的方法。

我尝试运行的Popen命令非常简单,不,我不能只是导入文件并将其用作类...它需要通过Popen运行。另外,不能选择virtualenv或类似的软件。

subprocess.Popen(['python', 'main.py'], shell=True, universal_newlines=True)

1 个答案:

答案 0 :(得分:0)

shebang(显示要使用的解释器的第一行,例如#!/usr/bin/python#!/usr/bin/python3)仅在您未明确选择解释器的情况下才受到认可:如果运行{{ 1}},操作系统正在调用特定的Python解释器,并将python foo.py作为参数传递(它解释为应运行的脚本的名称);而当您运行foo.py时,您是在告诉操作系统本身要使用哪个解释器来运行./foo.py,这是通过查看shebang来完成的。

要将其留给操作系统选择,只需明确指定脚本名称:

foo.py