确定Python所需最低版本的工具?

有没有类似于Pylint,会看Python脚本(或运行它),并确定每个行(或function)需要哪个版本的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版本放在光盘上,然后运行脚本,看看发生了什么错误。

受到这个优秀问题的启发,我最近编写了一个试图做到这一点的脚本。 你可以在pyqver的 github上find它。

这是相当完整的,但有一些方面尚未处理(如自述文件中所述)。 随意叉和改善它!

不是一个实际有用的答案,但在这里它无论如何。 我认为这应该是可行的(虽然可能是一个相当的练习),例如,你可以确保你有你想要检查的版本的所有官方语法,就像这个 。

然后parsing从第一个语法版本开始的代码位。 接下来,您需要所有内置模块名称空间的类似映射,并从最早的版本开始再次parsing代码,但区分内置模块和外部模块(如ElementTree之间的模块)可能会非常棘手。

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