【问题标题】:Compile (but do not run) a Python script [duplicate]编译(但不运行)Python 脚本 [重复]
【发布时间】:2011-05-31 01:26:44
【问题描述】:

可能重复:
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 会比编译发现 更多 个问题。

标签: python syntax-checking


【解决方案1】:

py_compile — Compile Python source files

import py_compile
py_compile.compile('my_script.py')

【讨论】:

  • 在使用此方法之前,请查看 Mark Johnson 的高度投票答案,以使其成为无需额外 python 的命令行执行。
【解决方案2】:

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

python -c "__import__('compiler').parse(open('test.py').read())"

这适用于 Python 2.x。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:
      python -m py_compile script.py
      

      【讨论】:

      • 谢谢。这太棒了!并且比@Greg Hewgills 版本更容易记住;)
      • 这应该是公认的答案。
      • 正是我所希望的 - 谢谢
      • 您可以使用findxargs 对此进行扩展以检查目录。以下是在您的 src/ 目录上运行它的方法:find src -type f -name '*.py' | xargs -n1 python3 -m py_compile
      猜你喜欢
      • 1970-01-01
      • 2017-02-06
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2014-03-12
      • 1970-01-01
      相关资源
      最近更新 更多