diff --git a/Dockerfile b/Dockerfile index e9f005e75e..3240da7ded 100644 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,15 @@ RUN if [[ $(uname -m) =~ "aarch64" ]]; then \ WORKDIR /opt/monai +# Patch NVIDIA's pip constraint file: +# - keep the base image's numpy pin if present (older images pin numpy==1.26.4 as +# their torch was compiled against NumPy 1.x; newer images may ship an empty file) +# - add setuptools<71 (setuptools>=71 removed pkg_resources, breaking MetricsReloaded) +# - pin urllib3>=2 to prevent inadvertent downgrades by pip-installing legacy packages +RUN (grep '^numpy' /etc/pip/constraint.txt || true) > /tmp/new_constraints.txt \ + && printf 'setuptools<71\nurllib3>=2\n' >> /tmp/new_constraints.txt \ + && cp /tmp/new_constraints.txt /etc/pip/constraint.txt + # install full deps COPY requirements.txt requirements-min.txt requirements-dev.txt /tmp/ RUN cp /tmp/requirements.txt /tmp/req.bak \ diff --git a/requirements-dev.txt b/requirements-dev.txt index 08fcdc2b0e..b2c36f8de6 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -18,6 +18,7 @@ black>=26.3.1 isort>=5.1, <6, !=6.0.0 ruff>=0.14.11,<0.15 pybind11 +setuptools<71 # pkg_resources removed in setuptools>=71; needed by MetricsReloaded setup.py types-setuptools mypy>=1.5.0, <1.12.0 ninja @@ -33,8 +34,8 @@ tifffile; platform_system == "Linux" or platform_system == "Darwin" pandas requests einops -transformers>=4.53.0 -mlflow>=2.12.2,<3.13 +transformers>=4.53.0, <5.0 # 5.x references torch.float8_e8m0fnu absent in older PyTorch builds +mlflow>=2.12.2, <3.0 # 3.x broken on Python 3.12 (relative import in mlflow.utils.uv_utils) clearml>=1.10.0rc0 matplotlib>=3.6.3 tensorboardX