我正在编写必须在许多不同的类 UNIX 版本上运行的脚本。 这些是用 python 2.x 编写的。
不幸的是,一些较新的版本已经开始将这种 flavor 二进制文件称为“python2”而不是“python”。因此,“#!/usr/bin/env python”不能用于寻找正确安装的 python 解释器。要么我得到第 3 版解释器(不好),要么根本没有解释器(更糟!)
是否有一种巧妙的方法来编写 python 脚本,以便在安装时加载 python2 解释器,否则在安装时加载 python 解释器?我必须使用其他机制来检测“python”何时是 python3,但由于那时我处于类似 python 的环境中,所以我可以接受。
我想我可以写一个涟漪发射器,把它叫做“findpython2”,然后用它作为 #!脚本的解释器,但这意味着我必须在搜索路径中安装 findpython2,这显然是次优的(这些脚本通常通过绝对引用调用,因此它们不在路径中。)
最佳答案
从著名的 perl hashbang 技巧中获得灵感,我想到了这个:
#!/bin/sh
"""":
python2 -c "" 2>/dev/null && exec python2 $0 ${1+"$@"}
python -c "" 2>/dev/null && exec python $0 ${1+"$@"}
echo "Could not find a python interpreter."
exit 1
"""
print "hello python"
关于python - 脚本 Hashbang : How to get the python 2 interpreter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606333/