2009-04-29 62 views
47

是否有類似於Pylint的東西,它會查看Python腳本(或運行它),並確定每個行(或函數)所需的Python版本?確定Python所需最低版本的工具?

例如,理論用量:

$ magic_tool <EOF 
with something: 
    pass 
EOF 
1: 'with' statement requires Python 2.6 or greater 

$ magic_tool <EOF 
class Something: 
    @classmethod 
    def blah(cls): 
     pass 
EOF 
2: classmethod requires Python 2.2 or greater 
$ magic_tool <EOF 
print """Test 
""" 
EOF 
1: Triple-quote requires Python 1.5 of later 

這種事可能嗎?我想最簡單的方法是將所有Python版本放在光盤上,然後運行腳本並查看發生了什麼錯誤。

+3

+1這是一個很好的問題。我最近在尋找這樣的東西。 – Zifre 2009-04-29 22:41:18

+0

這當然是可能的。然而,它可能還沒有實施。 – lothar 2009-04-29 23:43:20

回答

42

受這個優秀問題的啓發,我最近編寫了一個腳本,試圖做到這一點。你可以在github上找到pyqver

這是相當完整的,但有一些方面尚未處理(如自述文件中所述)。隨意分叉並改進它!

8

不是一個實際有用的答案,但它在這裏無論如何。 我認爲這應該是可行的(儘管可能是相當的練習),例如,您可以確保您有要檢查的版本的所有官方語法,如this one

然後解析從第一個語法版本開始的代碼位。 接下來,您需要所有內置模塊命名空間的類似映射,並從最早的版本開始再次解析代碼,但區分內置模塊和外部模塊或像ElementTree之類的模塊可能會很棘手。

結果應該是支持代碼語法和模塊概述以及需要使用哪個版本(如果有的話)的版本的概述。有了這個結果,你可以計算出最好的最低和最高版本。

相關問題