如何解析Python文件以查看它们是否与Python 3.7兼容



我目前正在一系列树莓派系统上部署一些代码。这些系统都有python 3.7。安装了X,但是我团队的一个自定义库有一些python 3.8的特性(一些海象操作符等)。我需要修改我的库以删除所有3.8功能,以便代码在这些机器上运行。我无法更新它们的python版本。是否存在脚本或工具来批量检查文件或文件文件夹是否与python 3.7兼容?我在想类似于flake8或black可以检查问题的东西。

运行静态分析工具,如pylintmypy,并确保它运行在适当的Python版本上。这些工具做的第一件事就是使用Python解析器解析代码,它们会报告它们发现的任何SyntaxErrors。

从我无可否认的轻度研究来看,似乎没有专门为此构建的工具。所以我将告诉你三种方法来找出答案。

<标题>

1。直接运行我想一种方法是直接运行它并检查错误。这是最明显的方法。但这有点不切实际。你需要检查大量的文件。所以这种方法可能不适合你。我用一个测试文件尝试了这个,如果我在Python 3.7中运行它,下面是错误:

File "test.py", line 3
def cool_function(a, b, /):
^
SyntaxError: invalid syntax

你可能会注意到这个文件中使用了许多3.8的特性,而这些特性并没有显示出来。

<标题>

2。直接编译好吧,你很幸运!如果您还不知道,从技术上讲,Python是一种编译型编程语言。它首先编译成字节码,然后运行它。你可以编译Python而不运行!您可以使用py_compile工具进行此操作!你可以这样使用:

python -m py_compile fileA.py fileB.py fileC.py

不幸的是,这与上面的其他解决方案有相同的问题。它将在发现一个错误后停止。但是如果你想慢慢地移植这些脚本,一个错误一个错误地移植,这可能会很好。

<标题>

3。(潜在地)工具您可以使用Pylint来实现此目的。如果使用--py-version标志,则可以设置要检查兼容性的版本。你也可以用Flake8来做这个,但是你不能用那个旗帜。你必须安装Pylint和你想要检查的python版本。

最新更新