2009-04-29 61 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之类的模块可能会很棘手。

结果应该是支持代码语法和模块概述以及需要使用哪个版本(如果有的话)的版本的概述。有了这个结果,你可以计算出最好的最低和最高版本。

相关问题