diff --git a/scripts/install-cli.sh b/scripts/install-cli.sh index a39b73c2e5a..332bd559672 100755 --- a/scripts/install-cli.sh +++ b/scripts/install-cli.sh @@ -95,9 +95,10 @@ if [ -z "$UV_BIN" ] || [ "${CURRENT_UV_VERSION:-}" != "$UV_VERSION" ]; then fi # ── install ──────────────────────────────────────────────────────────────── -# --python-preference system: reuse a compatible system Python when present, -# otherwise download a managed one. Either way uv honours litellm's requires-python, -# so a too-old (3.9) or too-new (3.14+) system Python is skipped, not forced. +# --python mirrors requires-python in pyproject.toml (keep in sync): uv selects the +# interpreter before resolving, so an unconstrained request accepts a too-old system +# Python (stock macOS ships 3.9) and fails resolution instead of downloading a +# managed one. --python-preference system still reuses a compatible system Python. echo "" if [ -n "${LITELLM_CLI_REF:-}" ]; then header "Installing litellm[cli] from ${LITELLM_CLI_REF}…" @@ -106,8 +107,8 @@ else fi echo "" -"$UV_BIN" tool install --python-preference system --force "${LITELLM_PACKAGE}" \ - || die "uv tool install failed. Try manually: $UV_BIN tool install '${LITELLM_PACKAGE}'" +"$UV_BIN" tool install --python '>=3.10,<3.15' --python-preference system --force "${LITELLM_PACKAGE}" \ + || die "uv tool install failed. Try manually: $UV_BIN tool install --python '>=3.10,<3.15' '${LITELLM_PACKAGE}'" # ── find the lite binary installed by uv tool ────────────────────────────── SCRIPTS_DIR="$("$UV_BIN" tool dir --bin)" diff --git a/scripts/install.sh b/scripts/install.sh index 213f8a7b440..275916d8a37 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -100,11 +100,12 @@ else fi echo "" -# --python-preference system: reuse a compatible system Python when present, -# otherwise download a managed one. Either way uv honours litellm's requires-python, -# so a too-old (3.9) or too-new (3.14+) system Python is skipped, not forced. -"$UV_BIN" tool install --python-preference system --force "${LITELLM_PACKAGE}" \ - || die "uv tool install failed. Try manually: $UV_BIN tool install '${LITELLM_PACKAGE}'" +# --python mirrors requires-python in pyproject.toml (keep in sync): uv selects the +# interpreter before resolving, so an unconstrained request accepts a too-old system +# Python (stock macOS ships 3.9) and fails resolution instead of downloading a +# managed one. --python-preference system still reuses a compatible system Python. +"$UV_BIN" tool install --python '>=3.10,<3.15' --python-preference system --force "${LITELLM_PACKAGE}" \ + || die "uv tool install failed. Try manually: $UV_BIN tool install --python '>=3.10,<3.15' '${LITELLM_PACKAGE}'" # ── find the litellm binary installed by uv tool ─────────────────────────── SCRIPTS_DIR="$("$UV_BIN" tool dir --bin)"