mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-16 17:20:05 +00:00
fix(docker): bypass uv extras chain bug in libero_plus Dockerfile
uv silently skips packages when resolving a nested extras chain (lerobot[libero_plus] -> lerobot[libero] -> hf-libero -> robosuite). POST-INSTALL grep confirmed robosuite absent after install despite uv reporting 'Resolved 113 packages, Installed 1'. Fix: install all libero_plus deps directly by name, bypassing the extras chain entirely. Also add --plain flag to build script for verbose output. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -14,15 +14,24 @@
|
||||
|
||||
FROM lerobot-eval-base:latest
|
||||
|
||||
# Diagnostic: show what's in the venv before the libero_plus install
|
||||
RUN echo "=== PRE-INSTALL ===" && uv pip list | grep -iE "robosuite|bddl|robomimic|hf.libero|scikit.image|wand" || echo "(none of the libero_plus-specific packages are installed)"
|
||||
# Install libero_plus deps explicitly rather than via ".[libero_plus]" extras chain.
|
||||
# uv has a bug where it considers packages "already resolved" when coming through
|
||||
# a nested lerobot[libero] → lerobot[libero_plus] extras chain, silently skipping them.
|
||||
RUN uv pip install --no-cache \
|
||||
"hf-libero>=0.1.3,<0.2.0" \
|
||||
"hf-egl-probe>=1.0.1" \
|
||||
"transformers>=5.3.0,<6.0.0" \
|
||||
"scipy>=1.14.0,<2.0.0" \
|
||||
"bddl>=1.0.1,<2.0.0" \
|
||||
"future" \
|
||||
"easydict>=1.9" \
|
||||
"wand" \
|
||||
"scikit-image>=0.20.0" \
|
||||
"gym>=0.25.0,<0.27.0"
|
||||
|
||||
RUN uv pip install --no-cache ".[libero_plus]" \
|
||||
&& echo "=== POST-INSTALL ===" && uv pip list | grep -iE "robosuite|bddl|robomimic" \
|
||||
# Clone LIBERO-plus; its setup.py has empty install_requires so deps come from the
|
||||
# lerobot[libero] extra above. Install the package to get LIBERO-plus environments,
|
||||
# then add a .pth so the libero module can locate its data files at runtime.
|
||||
&& git clone --depth 1 https://github.com/sylvestf/LIBERO-plus.git /tmp/LIBERO-plus \
|
||||
# Clone LIBERO-plus; install with --no-deps (runtime deps declared above via hf-libero).
|
||||
# Add .pth so the libero module can locate its data files at runtime.
|
||||
RUN git clone --depth 1 https://github.com/sylvestf/LIBERO-plus.git /tmp/LIBERO-plus \
|
||||
&& uv pip install --no-cache --no-deps /tmp/LIBERO-plus \
|
||||
&& python -c "import pathlib, site; pathlib.Path(site.getsitepackages()[0], 'libero_plus_repo.pth').write_text('/tmp/LIBERO-plus\n')" \
|
||||
&& python -c "import libero, robosuite, bddl"
|
||||
|
||||
@@ -27,6 +27,7 @@ PUSH=false
|
||||
HUB_ORG=""
|
||||
BENCHMARKS="libero libero_plus robomme robocasa"
|
||||
NO_CACHE_BASE=false
|
||||
PROGRESS="auto"
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
@@ -34,6 +35,7 @@ for arg in "$@"; do
|
||||
--hub_org=*) HUB_ORG="${arg#*=}" ;;
|
||||
--benchmarks=*) BENCHMARKS="${arg#*=}" ;;
|
||||
--no-cache-base) NO_CACHE_BASE=true ;;
|
||||
--plain) PROGRESS="plain" ;;
|
||||
*) echo "Unknown arg: $arg"; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
@@ -57,6 +59,7 @@ fi
|
||||
echo "=== Building lerobot-eval-base ==="
|
||||
docker build \
|
||||
${BASE_CACHE_FLAG} \
|
||||
--progress="${PROGRESS}" \
|
||||
-f "${SCRIPT_DIR}/Dockerfile.eval-base" \
|
||||
-t lerobot-eval-base:latest \
|
||||
"${REPO_ROOT}" || fail "lerobot-eval-base build failed"
|
||||
@@ -80,6 +83,7 @@ for BENCHMARK in $BENCHMARKS; do
|
||||
echo ""
|
||||
echo "=== Building ${LOCAL_TAG} from $(basename ${DOCKERFILE}) ==="
|
||||
docker build \
|
||||
--progress="${PROGRESS}" \
|
||||
-f "${DOCKERFILE}" \
|
||||
-t "${LOCAL_TAG}" \
|
||||
"${REPO_ROOT}" || fail "${LOCAL_TAG} build failed"
|
||||
|
||||
Reference in New Issue
Block a user