update
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from __future__ import annotations
|
||||
import argparse
|
||||
import io
|
||||
import shutil
|
||||
@@ -168,12 +169,14 @@ def main(argv=None):
|
||||
|
||||
# 版本预检:主进程的 validateInterpreter 已经挡过一层,这里是纵深防御——
|
||||
# 用户可能绕过 UI 直接调引擎,或 PATH 上的 python 在探测后被换掉。
|
||||
# 低于 3.9 时后面的 list[X] 泛型注解会直接 SyntaxError,拿不到结构化错误。
|
||||
if sys.version_info < (3, 9):
|
||||
# 最低版本 3.8:4 个引擎模块全用了 `from __future__ import annotations`
|
||||
# (PEP 563, 3.7+),PEP 604 / PEP 585 注解都字符串化 —— 3.8 也 import 得住。
|
||||
# 3.7 故意不锁:dataclass + 字符串化 PEP 585 的边界 case 多,且 3.7 已 EOL 2 年。
|
||||
if sys.version_info < (3, 8):
|
||||
got = ".".join(str(p) for p in sys.version_info[:3])
|
||||
emit(_base(env, config, "runtime_error",
|
||||
error={"type": "PythonTooOld",
|
||||
"message": f"引擎需要 Python 3.9 或更高版本,当前为 {got}"}))
|
||||
"message": f"引擎需要 Python 3.8 或更高版本,当前为 {got}"}))
|
||||
return
|
||||
|
||||
# 一次 IO 拿到 src:语法预检和后续 profile 都用这份文本
|
||||
|
||||
Reference in New Issue
Block a user