编译(但不运行)Python脚本

编译(但不运行)Python脚本,python,syntax-checking,Python,Syntax Checking,可能重复: 如何在不运行Python脚本的情况下编译它?我只想检查脚本的语法错误。我希望有一个简单的命令行切换,但在python--help中没有看到任何内容。我想知道Python 2和Python 3的答案。 一种方法是这样做(对于test.py): 这适用于Python2.x。您可以使用它查找语法错误以及更微妙的错误,例如在一些很少使用的条件分支中访问未定义的变量。@sukhbir:您是对的,但我刚刚意识到答案,并且在该线程中没有给出。@asmurer:是的,你发布的答案就在这个问题上。编

可能重复:

如何在不运行Python脚本的情况下编译它?我只想检查脚本的语法错误。我希望有一个简单的命令行切换,但在
python--help
中没有看到任何内容。我想知道Python 2和Python 3的答案。


一种方法是这样做(对于
test.py
):


这适用于Python2.x。

您可以使用它查找语法错误以及更微妙的错误,例如在一些很少使用的条件分支中访问未定义的变量。

@sukhbir:您是对的,但我刚刚意识到答案,并且在该线程中没有给出。@asmurer:是的,你发布的答案就在这个问题上。编译和语法检查实际上是两码事。如果要进行语法检查,答案在另一个线程中。如果你问如何编译它,这是一个不同的问题,你真的应该改变话题。@Lennart:有没有办法不编译就检查语法?我想您可以使用类似于pylint的东西,但是在Python中编译是一个非常快速的操作,您最好这样做,并确保一切正常。使用pylint或pyflakes会发现比编译更多的问题。谢谢。这太棒了!而且比@Greg Hewgills版本更容易记住;)这应该是公认的答案。这正是我所希望的-谢谢你可以通过
find
xargs
来检查目录。以下是如何在
src/
dir:
find src-type f-name'*.py'| xargs-n1 python3-m py_编译
文档上运行它:在使用此方法之前(特别是,请参阅
main()
的讨论),看看马克·约翰逊(MarkJohnson)的投票率很高的答案,他认为这是一种命令行执行,而不需要额外的python。
python -m py_compile script.py
python -c "__import__('compiler').parse(open('test.py').read())"
python -m py_compile script.py