Files
computer-playbook/scripts/install/python.sh
T
kevinveenbirkenbach b0b8874bad feat(python): reload env after venv creation to ensure pip uses virtualenv
Fixes an issue where `PYTHON` could still point to the system interpreter
when `scripts/install/python.sh` runs after `install-venv`.

* Reload env layer if venv exists and PYTHON is not yet pointing to it
* Reset env caching flags to force re-evaluation
* Preserve central environment resolution logic (no hardcoding)

This resolves Debian/PEP 668 `externally-managed-environment` errors during pip install.
2026-04-08 20:30:35 +02:00

52 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# 🔁 Reload env to pick up newly created venv
if [[ -n "${VENV:-}" && -x "${VENV}/bin/python" && "${PYTHON:-}" != "${VENV}/bin/python" ]]; then
unset INFINITO_ENV_LOADED
unset INFINITO_ENV_PYTHON_LOADED
# shellcheck source=scripts/meta/env/all.sh
source "${ENV_SH:-scripts/meta/env/all.sh}"
fi
: "${PYTHON:?PYTHON not set}"
EXTRA="${1:-}"
retry() {
local attempts=7
local delay=20
local count=1
while true; do
if "$@"; then
return 0
fi
if [[ $count -ge $attempts ]]; then
echo "❌ Command failed after ${attempts} attempts."
return 1
fi
echo "⚠️ Attempt ${count}/${attempts} failed. Retrying in ${delay}s..."
sleep "${delay}"
((count++))
done
}
install_python_deps() {
echo "📦 Installing Python dependencies"
retry "${PYTHON}" -m pip install --upgrade pip setuptools wheel
if [[ -n "${EXTRA}" ]]; then
echo "→ Installing with extras: [${EXTRA}]"
retry "${PYTHON}" -m pip install -e ".[${EXTRA}]"
else
echo "→ Installing base package"
retry "${PYTHON}" -m pip install -e .
fi
}
install_python_deps