是否有用于检测代码库中使用的主要Python版本的工具?我需要能够检查源代码并确定用于执行该代码的Python版本。
我考虑过的一种方法是看看2to3是否暗示了任何变化。任何建议都会表明Python 2,否则我可以假设Python 3.虽然这感觉有点笨拙,所以我想知道是否有更好的方法。
答案 0 :(得分:2)
一个粗略的想法:
使用py_compile编译源代码,分别使用Python2和Python3执行两次,看看是否给出了错误。
这是为了区别于语法。适合2和3的源可以简单地判断为"两者都是"。
这也是一种静态方法,不能从需要运行时的信息中推断出来,例如:
import a_python_2_specific_module
暗示代码只是Python2,但检测到这个事实似乎超出了方法的能力。
请注意,如果您实际调用不受信任的源代码(例如将其提供给解释器或eval
),则强烈建议不要这样做。
答案 1 :(得分:0)
您可以在代码中使用eval
进行检查:
try:
eval("1 if True else 2")
except SyntaxError:
#
或未来不是所有版本的未来!