diff --git a/docker/Dockerfile b/docker/Dockerfile index fde0012..83b3b3f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -299,11 +299,14 @@ RUN set -ex && \ # 2) 手动注册 vllm 为 editable package(阶段 8a 已编译 C++ 扩展,此处不触发 cmake) cd /opt/vllm && \ mkdir -p vllm.egg-info && \ - printf 'Metadata-Version: 2.1\nName: vllm\nVersion: 0.0.0\nSummary: A high-throughput and memory-efficient inference and serving engine for LLMs\n' > vllm.egg-info/PKG-INFO && \ + printf 'Metadata-Version: 2.1\nName: vllm\nVersion: 0.11.0\nSummary: A high-throughput and memory-efficient inference and serving engine for LLMs\n' > vllm.egg-info/PKG-INFO && \ echo "vllm" > vllm.egg-info/top_level.txt && \ touch vllm.egg-info/dependency_links.txt && \ touch vllm.egg-info/requires.txt && \ find vllm -name "*.py" -type f 2>/dev/null | sort > vllm.egg-info/SOURCES.txt && \ + # 2b) 写 vllm/_version.py(替代 setuptools_scm 生成),避免 vllm.__version__='dev' 触发 + # mineru.backend.vlm.utils:88 中 packaging.version.parse 抛 InvalidVersion + printf '__version__ = "0.11.0"\n__version_tuple__ = (0, 11, 0)\n' > /opt/vllm/vllm/_version.py && \ echo "vllm egg-info created (cmake build skipped, C++ extensions from stage 8a)" && \ # 3) 安装 ROCm PyTorch(后续依赖解析用 ROCm 源补齐 triton-rocm) (${VENV}/bin/pip uninstall -y triton triton-rocm 2>/dev/null || true) && \ diff --git a/docker/scripts/patch_vllm_platform.py b/docker/scripts/patch_vllm_platform.py index a9b0c4a..b49e774 100644 --- a/docker/scripts/patch_vllm_platform.py +++ b/docker/scripts/patch_vllm_platform.py @@ -95,6 +95,20 @@ def ensure_vllm_dist_info(): return version = getattr(vllm, '__version__', '0.1.dev1') or '0.1.dev1' + # PEP440 合法性校验:vllm 在 _version.py 缺失时会回退到 'dev', + # 这不是合法 PEP440,会触发下游 packaging.version.parse 抛 InvalidVersion + # (例如 mineru.backend.vlm.utils:set_default_gpu_memory_utilization)。 + try: + from packaging.version import Version as _PEP440Version + _PEP440Version(version) + except Exception: + print(f'WARNING: vllm.__version__={version!r} is not PEP440-compliant; ' + f'falling back to "0.11.0" for dist-info.') + version = '0.11.0' + try: + vllm.__version__ = version + except Exception: + pass site_packages = sysconfig.get_paths().get('purelib') if not site_packages: return