首页 > 解决方案 > 子进程 Popen 运行 python 命令

问题描述

我需要在 Popen 中运行 python 命令。问题是命令需要在 python3 中运行并且我需要它是可移植的,这意味着我不能python3在每种情况下都使用别名......

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

我无法修改环境变量以更改python3python. 我想知道是否有一种方法可以检查我需要使用哪个,或者有一种方法可以在 Popen 命令中将其更改python3为ONLY ...python

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

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

标签: pythonpython-3.xsubprocesspopen

解决方案


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

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

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

推荐阅读