|
|
@@ -9,7 +9,7 @@
|
|
|
python guanlan.py qa 离线模型已知答案回放 (需服务已起; 参数见 scripts/llm_known_answer.py)
|
|
|
端口与路径在 configs/serve.json (没有则用内置默认). 所有服务只绑 127.0.0.1."""
|
|
|
from __future__ import annotations
|
|
|
-import json, os, socket, subprocess, sys, time, urllib.request, webbrowser, signal
|
|
|
+import json, os, socket, subprocess, sys, time, urllib.request, warnings, webbrowser, signal
|
|
|
from pathlib import Path
|
|
|
ROOT = Path(__file__).resolve().parent; RUN = ROOT / "run"; LOGS = ROOT / "logs"; PIDS = RUN / "pids.json"
|
|
|
WIN = os.name == "nt"
|
|
|
@@ -113,6 +113,19 @@ def cmd_check(c):
|
|
|
def row(name, good, note=""):
|
|
|
nonlocal ok; ok &= bool(good); print(f" [{'OK' if good else 'FAIL'}] {name}{(' — ' + note) if note else ''}")
|
|
|
print(f"观澜·如东样板 v2 自检 @ {ROOT}"); v = sys.version_info; row("Python ≥ 3.11", v >= (3, 11), f"{v.major}.{v.minor}.{v.micro} ({sys.executable})")
|
|
|
+ # 源码可编译性 —— 重点是**非法转义序列**: 普通字符串里写 `\d` `\*` 这类, Python 3.12 只给
|
|
|
+ # SyntaxWarning, 未来版本会变成 SyntaxError。这类问题在开发机上永远看不见, 换台机器/换个解释器才炸
|
|
|
+ # (2026-09-11 逮到 src\windcms\serve.py 里 JS 正则的两处, 已按"补成合法转义"修好)。
|
|
|
+ srcs = sorted(list((ROOT / "src").rglob("*.py")) + list((ROOT / "scripts").rglob("*.py")))
|
|
|
+ bad = []
|
|
|
+ with warnings.catch_warnings(record=True) as w:
|
|
|
+ warnings.simplefilter("always")
|
|
|
+ for f in srcs:
|
|
|
+ try: compile(f.read_text(encoding="utf-8"), str(f), "exec")
|
|
|
+ except SyntaxError as e: bad.append(f"{f.relative_to(ROOT)}:{e.lineno} {e.msg}")
|
|
|
+ for it in w:
|
|
|
+ if issubclass(it.category, SyntaxWarning): bad.append(f"{Path(str(it.filename)).name}:{it.lineno} {it.message}")
|
|
|
+ row(f"源码可编译 ({len(srcs)} 个文件, 无非法转义/语法错)", not bad, "; ".join(bad[:3]))
|
|
|
for m in ("numpy", "pandas", "pyarrow", "polars", "yaml", "matplotlib", "plotly", "jinja2", "docx"):
|
|
|
try: __import__(m); row(f"依赖 {m}", True)
|
|
|
except Exception as ex: row(f"依赖 {m}", False, f"未安装: {ex.__class__.__name__} (运行 install 脚本)")
|