Compile (but do not run) a Python script
Possible Duplicate:
How can I check the syntax of Python script without executing it?
如何在不运行的情况下编译Python脚本? 我只是想检查脚本的语法错误。 我希望有一个简单的命令行开关,但我在python --help中没有看到任何内容。 我想要Python 2和Python 3的答案。
-
@sukhbir:你是对的,但我刚刚意识到答案,并没有在那个帖子中给出。
-
@asmeurer:是的,你发布的答案就在那个问题上。
-
实际上,编译和语法检查是不同的事情。你想要语法检查,答案是在另一个线程中。你问如何编译它,这是一个不同的问题,你应该真正改变主题。
-
@Lennart:有没有办法在不编译的情况下检查语法?我想你可以使用像pylint这样的东西,但是在Python中编译是一个如此快速的操作,你可以这样做,并确保一切正常。
-
使用pylint或pyflakes会发现比编译更多的问题。
-
@Lennart:不幸的是,Pylint / Pyflakes目前还不满足我原来问题的一个条件,那就是它必须在Python 3中运行。
-
这是事实,但也只是时间问题。
-
flake8(github.com/pycqa/flake8/blob/master/docs/source/index.rst)
1
| python -m py_compile script.py |
-
谢谢。 这太棒了! 比@Greg Hewgills版更容易记住;)
-
这应该是公认的答案。
-
正是我所希望的 - 谢谢
-
您可以使用find和xargs对此进行扩展以检查目录。 以下是在src/目录上运行它的方法:find src -type f -name '*.py' | xargs -n1 python3 -m py_compile
-
文档:docs.python.org/3/using/cmdline.html#using-on-cmdline和docs.python.org/3/library/py_compile.html(特别参见main()的讨论。)
py_compile - 编译Python源文件
1 2
| import py_compile
py_compile.compile('my_script.py') |
-
在使用这种方法之前,先看一下Mark Johnson的高度评价的答案,使其成为命令行执行而无需额外的python。
您可以使用pylint查找语法错误以及更微妙的错误,例如在一些很少使用的条件分支中访问未定义的变量。
一种方法是做这样的事情(对于test.py):
1
| python -c"__import__('compiler').parse(open('test.py').read())" |
这适用于Python 2.x.