Skip to content

Commit 7168d5d

Browse files
committed
fix(backend): 兼容 Python 3.14 使用 ruamel.yaml 回退
1 parent bc8bf4c commit 7168d5d

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

‎backend/app_config.py‎

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,23 @@
77

88
try:
99
import yaml
10+
_YAML_LOADER = "pyyaml"
1011
except ImportError:
11-
yaml = None
12+
try:
13+
# ruamel.yaml 为纯 Python 实现,兼容 Python 3.14(PyYAML 的 C 扩展在 3.13+ 无法构建)
14+
from ruamel.yaml import YAML as _RuamelYAML
15+
_yaml_loader = _RuamelYAML(typ="safe")
16+
def _safe_load(stream):
17+
return _yaml_loader.load(stream)
18+
class _YamlShim:
19+
@staticmethod
20+
def safe_load(stream):
21+
return _safe_load(stream)
22+
yaml = _YamlShim
23+
_YAML_LOADER = "ruamel"
24+
except ImportError:
25+
yaml = None
26+
_YAML_LOADER = None
1227

1328
BASE_DIR = Path(__file__).parent.parent
1429
CONFIG_PATH = BASE_DIR / "config.yml"

‎requirements-unix.txt‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ psutil==5.9.8
55
py3nvml==0.2.7
66
python-multipart==0.0.6
77
python-dotenv==1.0.0
8-
pyyaml==6.0.1
8+
pyyaml>=6.0.2
9+
ruamel.yaml>=0.17.40

‎requirements-windows.txt‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ psutil==5.9.8
66
py3nvml==0.2.7
77
python-multipart==0.0.6
88
python-dotenv==1.0.0
9-
pyyaml==6.0.1
9+
pyyaml>=6.0.2
10+
ruamel.yaml>=0.17.40
1011
wmi==1.5.1

0 commit comments

Comments
 (0)