Jon*_*tte 3 python unix linux shell python-2.7
我正在编写必须在许多不同类UNIX上运行的脚本.这些是用python 2.x编写的.
不幸的是,一些较新的版本已经采用调用这种风格二进制文件"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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
669 次 |
| 最近记录: |