我需要在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)
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)