【发布时间】:2026-02-15 06:40:02
【问题描述】:
如何静态判断 Python 源文件是否支持 Python 3?
这个问题可能无法像那里所说的那样回答,所以我会更具体:
我的应用程序是选择一个不会产生虚假 SyntaxErrors 的 flake8 版本来运行。出于这个原因,我正在寻找(至少)一些启发式方法来告诉我是应该运行 flake8 的 Python 3 副本还是 Python 2 副本。
我正在使用我的编辑器中的 flake8,它会在我输入时显示 lint 错误,我最担心的是有时我会丢失命名错误(例如 F821),这是 pyflakes/flake8 的副作用认为某些东西是语法错误,实际上是正确的语法:当它遇到语法错误时(可以理解)似乎放弃了命名错误之类的东西。
【问题讨论】:
-
这几乎是不可能的。要测试的代码路径太多。
-
if re.findall("print[^(]+['\"],file_text) > 0:print "PY2"...虽然它可能不能保证它总是正确的... -
@JoranBeasley:
from __future__ import print_function,或者只是使用print(...)作为单个值的理所当然的事情。 -
bleh 是的,好吧...我知道它会以多种方式失败...(这就是为什么它不是答案)
标签: python python-3.x flake8 pyflakes