如果使用Python 2运行脚本,如何抛出异常?

Abd*_*iJK 6 python python-3.x

我有一个只应该用Python 3运行的脚本.我想给出一个很好的错误消息,如果用户试图用Python 2.x运行它,不应该用python2运行这个脚本

我该怎么做呢?当我尝试检查Python版本时,它仍会抛出错误,因为Python在执行我的if条件之前解析整个文件.

如果可能的话,我宁愿不再制作另一个剧本.

pok*_*oke 11

您可以编写一个包装器启动脚本,在该脚本中只导入实际脚本并捕获语法错误:

try:
    import real_module
except SyntaxError:
    print('You need to run this with Python 3')
Run Code Online (Sandbox Code Playgroud)

然后,当real_module.py使用Python 3语法时,如果与Python 3一起使用会抛出异常,则会打印出上面的消息.

当然,不仅可以导入脚本,还可以先检查版本,然后在版本为3时导入它.这样做的好处是,即使使用Python运行它,您仍会看到实际脚本的语法错误3:

import sys
if sys.version_info[0] < 3:
    print('You need to run this with Python 3')
    sys.exit(1)

import real_module
Run Code Online (Sandbox Code Playgroud)

  • 不,正如其他人在评论中所说,在解释器运行任何代码之前解析整个脚本。因此,在您可能添加的任何代码运行之前,会抛出语法错误。 (2认同)