如果你有一个需要特定 python 版本的脚本,例如 2.7,我会将第一行更改为
#!/bin/env python2.7
然后确保python2.7
在您的路径上(您可能需要根据需要添加符号链接)。在我使用过的所有发行版中,这些符号链接已经存在。
(实际上,python
通常是一个符号链接pythonX
这是一个符号链接pythonX.Y
或者,就我而言,python -> python2 -> python2.7
. )
无需硬编码完整路径,因为这可能因发行版或盒子而异。
但是,由于名为的路径上的可执行文件不应该有歧义python2.7
,您应该没问题,而不必担心硬编码路径。
或者,在第一个脚本中,您可以直接调用 python 解释器,如下所示:
subprocess.Popen(['pythonX.Y', SCRIPT_NAME])
代替
subprocess.Popen([SCRIPT_NAME])
EDIT正如 J.F. Sebastian 在评论中指出的那样,您可以使用系统可执行文件在第一个参数中,以确保第二个脚本传递给与第一个脚本相同的解释器。例如
subprocess.Popen([sys.executable, SCRIPT_NAME])
顺便说一句,这可能有用也可能没用,您可以访问“当前”Python 解释器的版本inside脚本由
import sys
print(sys.hexversion)
这可能有助于确定正确的解释器是否正在运行。