我正在編寫必須在許多不同類UNIX版本上運行的腳本。 這些是用python 2.x編寫的。腳本Hashbang:如何獲得python 2解釋器?
不幸的是,一些較新的版本調用了這個風味二進制文件「python2」而不是「python」。因此,「#!/ usr/bin/env python」無法查找正確安裝的python解釋器。或者我得到的版本3解釋器(壞)或根本沒有解釋器(更糟糕!)
是否有一個聰明的方式來編寫一個python腳本,使得它將加載python2解釋器(如果已安裝),否則python解釋器if它的安裝?我不得不使用其他機制來檢測「python」是否是python3,但由於我在類似python的環境中,所以我可以忍受這一點。
我想我可以寫一個波紋發射器,稱之爲「findpython2」,並使用它作爲#!但這意味着我必須在搜索路徑中安裝findpython2,這絕對是次優的(這些腳本通常被稱爲絕對引用,因此它們不在路徑中)。
如果有人知道更好的方法來測試路徑中某個程序的存在,我很想知道。 – ninjalj
也可以使用:'$(type -p python2)&& interp = python2 ||的interp =蟒; exec $ interp「$ 0」$ {1 +「$ @」}' –
這實際上回答了這個問題。甜!此外,一個非常可怕的黑客:-) –