如何编写Python 2.6+脚本,使用较旧的Python优雅地失败?

sor*_*rin 5 python python-3.x

我正在使用Python 3.x中的新打印,我观察到以下代码由于没有编译end=' '.

from __future__ import print_function

import sys
if sys.hexversion < 0x02060000:
    raise Exception("py too old")

...
print("x",end=" ") # fails to compile with py24
Run Code Online (Sandbox Code Playgroud)

如何继续使用新语法但使脚本失败?是否必须调用另一个脚本并在此处仅使用安全语法?

Sco*_*ths 8

Python 2.6的简单方法就是添加如下行:

b'You need Python 2.6 or later.'
Run Code Online (Sandbox Code Playgroud)

在文件的开头.这利用了2.6中引入了字节文字的事实,因此任何早期版本都将SyntaxError使用您编写的任何消息作为堆栈跟踪引发.


Mad*_*ist 2

这里这个问题有一些建议,但看起来不容易实现。您必须创建一个包装脚本。