From 701c0d90ad9760fd3a33d2dad992799119c3ebdb Mon Sep 17 00:00:00 2001 From: claude_dev Date: Sat, 15 Aug 2026 09:09:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(docker):=20peewee=E9=92=89=E7=89=88?= =?UTF-8?q?=E7=A7=BB=E5=87=BA=E4=B8=BB=E6=B8=85=E5=8D=95=E6=94=B9Dockerfil?= =?UTF-8?q?e=E6=9C=AB=E6=AD=A5=E6=98=BE=E5=BC=8F=E9=99=8D=E7=BA=A7?= =?UTF-8?q?=E2=80=94=E2=80=94=E4=BA=8C=E6=AC=A1=E6=9E=84=E5=BB=BA=E5=AE=9E?= =?UTF-8?q?=E8=AF=81peewee=3D=3D3.17.3=E5=85=A5=E4=B8=BB=E6=B8=85=E5=8D=95?= =?UTF-8?q?=E4=B8=8Evnpy=5Fsqlite=E5=A3=B0=E6=98=8E>=3D3.17.9=E4=BA=92?= =?UTF-8?q?=E6=96=A5=E4=BB=8DResolutionImpossible(resolver=E4=B8=8D?= =?UTF-8?q?=E6=94=BE=E8=BF=87=E6=98=BE=E5=BC=8Fpin);=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E4=B8=BB=E6=B8=85=E5=8D=95=E7=94=B1resolver=E8=A3=85=E6=BB=A1?= =?UTF-8?q?=E8=B6=B3=E7=89=88+=E6=9C=AB=E6=AD=A5pip=20install=20peewee=3D?= =?UTF-8?q?=3D3.17.3=E5=8D=95=E8=A3=85=E9=99=8D=E7=BA=A7(=E5=8F=AA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E8=87=AA=E8=BA=AB=E4=BE=9D=E8=B5=96,VPS?= =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=AE=9E=E8=AF=81=E5=AF=B9=E9=BD=90);empyric?= =?UTF-8?q?al-reloaded=E5=90=8C=E6=80=9D=E8=B7=AF=E5=B7=B2=E5=9C=A8--no-de?= =?UTF-8?q?ps=E6=AD=A5=20[nas]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Dockerfile | 12 ++++++++---- requirements-docker.txt | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 45be42a..130a273 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -50,10 +50,14 @@ RUN mkdir -p /app/data /app/logs /app/config /app/temp COPY requirements-docker.txt . RUN pip install --no-cache-dir --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple && \ pip install --no-cache-dir -r requirements-docker.txt -i https://pypi.tuna.tsinghua.edu.cn/simple && \ - pip install --no-cache-dir --no-deps empyrical-reloaded==0.5.12 -i https://pypi.tuna.tsinghua.edu.cn/simple -# ↑ empyrical-reloaded 必须单独 --no-deps 装:其元数据伪依赖 peewee<3.17.4 与 -# vnpy_sqlite 的 >=3.17.9 互斥,合入 requirements 单次解析必 ResolutionImpossible; -# 包体零引用 peewee(实测),真依赖 bottleneck/numpy/pandas/scipy 已在主文件钉版。 + pip install --no-cache-dir --no-deps empyrical-reloaded==0.5.12 -i https://pypi.tuna.tsinghua.edu.cn/simple && \ + pip install --no-cache-dir peewee==3.17.3 -i https://pypi.tuna.tsinghua.edu.cn/simple +# ↑ 两个单独安装步骤均为解依赖死锁(2026-08-15 一/二次构建实证): +# ① empyrical-reloaded --no-deps:其元数据伪依赖 peewee<3.17.4 与 vnpy_sqlite 的 +# >=3.17.9 互斥,合入 requirements 单次解析必 ResolutionImpossible;包体零引用 +# peewee(实测),真依赖 bottleneck/numpy/pandas/scipy 已在主文件钉版。 +# ② peewee==3.17.3 显式降级对齐 VPS 生产实证版(主清单 resolver 会按 vnpy_sqlite +# 声明装 ≥3.17.9,单装只校验自身依赖可落 3.17.3;vnpy_sqlite 实证兼容)。 # 复制应用代码(包含所有 sanguo 模块) COPY sanguo_web/ /app/sanguo_web/ diff --git a/requirements-docker.txt b/requirements-docker.txt index fed4ae1..dd236a8 100644 --- a/requirements-docker.txt +++ b/requirements-docker.txt @@ -76,8 +76,9 @@ aioredis==2.0.1 polars[rtcompat]==1.42.1 # 钉版+[rtcompat]:NAS CPU(Synology Celeron)无 AVX2,plain polars 即便 1.42.1 也 SIGILL(exit132);需 [rtcompat] 拉 polars-runtime-compat 兜底。pre-init-rebuild 实证(有 polars-runtime-compat 才跑得通)。勿改回 >= scipy==1.15.3 bottleneck==1.6.0 -# peewee:vnpy_sqlite 声明 >=3.17.9 但 VPS 生产实证 3.17.3 跑通(lock 真相) -peewee==3.17.3 +# ⚠️ peewee 不可在此钉版:vnpy_sqlite 声明 >=3.17.9,钉 3.17.3(VPS 生产实证版) +# 会与之互斥致 ResolutionImpossible(2026-08-15 二次构建实证)。主清单由 resolver +# 装 vnpy_sqlite 满足版,Dockerfile 末步再显式降级 peewee==3.17.3 对齐 VPS。 alphalens-reloaded==0.4.6 scikit-learn==1.7.2 lightgbm==4.6.0