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