Summary
A fresh pip install algorithm-nexus[product]==0.2.2 fails at runtime because pip resolves torchgeo==0.10.0, which is incompatible with the pinned terratorch[vllm]==1.2.10.
Error
ImportError: cannot import name 'utils' from 'torchgeo.trainers'
(/opt/vllm/lib64/python3.12/site-packages/torchgeo/trainers/__init__.py)
This breaks both the terratorch_fix vLLM plugin and the Terratorch model architecture registration, making geospatial models (e.g. ibm-nasa-geospatial/Prithvi-EO-2.0-300M-TL-Sen1Floods11) unservable via vLLM.
Root Cause
-
torchgeo 0.10.0 (released 2026-08-14) renamed torchgeo.trainers → torchgeo.tasks (torchgeo PR #3887). The trainers.utils submodule was not shimmed with a deprecation alias — it was simply removed.
-
terratorch 1.2.10 (the version pinned by algorithm-nexus) imports from torchgeo.trainers import utils in multiple files (timm_model_factory.py, cli_tools.py, base_task.py, reconstruction_tasks.py, wxc_downscaling_task.py). Its pyproject.toml declares torchgeo as a dependency with no upper bound.
-
algorithm-nexus 0.2.2 pins terratorch[vllm]==1.2.10 in the [product] extra but has no direct torchgeo version constraint. The requirements-product.txt lock file pins torchgeo==0.9.0, but a bare pip install algorithm-nexus[product]==0.2.2 (without the lock file) lets pip resolve torchgeo==0.10.0, which breaks the import.
Upstream Status
- terratorch PR #1222 (merged 2026-08-18 to
main) pins torchgeo>=0.9.0,<0.10 — but this fix is not in any release. Latest release is still v1.2.10 (2026-07-15), which predates the fix.
- terratorch PR #1221 (open) does a full API migration to support torchgeo 0.10.
Reproduction
# In a clean environment or container (e.g. quay.io/vllm/automation-vllm:cuda-*)
pip install algorithm-nexus[product]==0.2.2
# This fails:
python -c "from terratorch.vllm.plugins.general import register_terratorch_fix"
# ImportError: cannot import name 'utils' from 'torchgeo.trainers'
# Workaround:
pip install "torchgeo<0.10"
# Now the import succeeds
Summary
A fresh
pip install algorithm-nexus[product]==0.2.2fails at runtime because pip resolvestorchgeo==0.10.0, which is incompatible with the pinnedterratorch[vllm]==1.2.10.Error
This breaks both the
terratorch_fixvLLM plugin and theTerratorchmodel architecture registration, making geospatial models (e.g.ibm-nasa-geospatial/Prithvi-EO-2.0-300M-TL-Sen1Floods11) unservable via vLLM.Root Cause
torchgeo 0.10.0 (released 2026-08-14) renamed
torchgeo.trainers→torchgeo.tasks(torchgeo PR #3887). Thetrainers.utilssubmodule was not shimmed with a deprecation alias — it was simply removed.terratorch 1.2.10 (the version pinned by algorithm-nexus) imports
from torchgeo.trainers import utilsin multiple files (timm_model_factory.py,cli_tools.py,base_task.py,reconstruction_tasks.py,wxc_downscaling_task.py). Itspyproject.tomldeclarestorchgeoas a dependency with no upper bound.algorithm-nexus 0.2.2 pins
terratorch[vllm]==1.2.10in the[product]extra but has no directtorchgeoversion constraint. Therequirements-product.txtlock file pinstorchgeo==0.9.0, but a barepip install algorithm-nexus[product]==0.2.2(without the lock file) lets pip resolvetorchgeo==0.10.0, which breaks the import.Upstream Status
main) pinstorchgeo>=0.9.0,<0.10— but this fix is not in any release. Latest release is still v1.2.10 (2026-07-15), which predates the fix.Reproduction