子进程Popen运行python命令

问题描述 投票:0回答:1

我需要在Popen中运行python命令。问题是命令NEEDS在python3中运行,我需要它是可移植的,这意味着我无法在每种情况下真正使用python3别名......

我有计算机,其中python已经是正确的版本,其他正确的版本是python3。我试图在文件的开头插入#!/usr/bin python3然后作为python运行,但它不起作用。

我无法修改环境变量以将python3更改为python。我想知道是否有办法检查我需要使用哪一个或者只在Popen命令中将python3更改为python ...

我试图运行的Popen命令非常简单,我不能只导入文件并用作类......它需要通过Popen运行。此外,virtualenv或similars不是一种选择。

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

python python-3.x subprocess popen
1个回答
0
投票

shebang - 显示使用哪个解释器的初始行,例如#!/usr/bin/python#!/usr/bin/python3 - 只有在您没有自己明确选择解释器时才会受到尊重:如果您运行python foo.py,操作系统正在调用特定的Python解释器并传递它foo.py作为参数(它将其解释为应该运行的脚本的名称);而当你运行./foo.py时,你告诉操作系统本身要弄清楚用哪个解释器运行foo.py,它通过查看shebang来做。

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

subprocess.Popen(['./main.py'], universal_newlines=True)
© www.soinside.com 2019 - 2024. All rights reserved.