setup: recreate an incomplete .venv instead of activating it
A failed venv creation (e.g. the Debian/Ubuntu python3-venv package missing) left the .venv directory behind; the next run saw it, skipped creation and failed to source/activate a venv without activate/pip. setup.sh now validates bin/activate, bin/python and bin/pip, removes an incomplete directory and creates it again; a creation failure removes the partial directory and names the venv package. setup.bat does the same with Scripts\activate.bat/python.exe/pip.exe and !errorlevel!. READMEs (prerequisites + scripts table), CHANGELOG (folded into the unreleased 3.38.1) and AGENTS updated. Tests: tests/test_setup_scripts.py (5: the shell/bat source pins and bash -n). 1088 Python + 1075 frontend.
This commit is contained in:
1 parent
a269f8bd2e
commit
2ecf7bb45c
6 files changed
+116
-5
No files matched your search
@@ -14,10 +14,24 @@ command -v git >/dev/null 2>&1 || { echo "Error: Git is required but not found.
|
||||
PY_VER=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
|
||||
echo "Found Python $PY_VER"
|
||||
|
||||
# Create venv
|
||||
# Create the venv. A failed creation (missing venv/ensurepip) leaves a partial
|
||||
# .venv behind: validate it and remove it so the next run starts over (v3.38.1).
|
||||
if [ -d "$VENV_DIR" ] && { [ ! -f "$VENV_DIR/bin/activate" ] || [ ! -x "$VENV_DIR/bin/python" ] || [ ! -x "$VENV_DIR/bin/pip" ]; }; then
|
||||
echo "Removing an incomplete virtual environment (a previous setup did not finish)..."
|
||||
rm -rf "$VENV_DIR"
|
||||
fi
|
||||
if [ ! -d "$VENV_DIR" ]; then
|
||||
echo "Creating virtual environment..."
|
||||
python3 -m venv "$VENV_DIR"
|
||||
if ! python3 -m venv "$VENV_DIR"; then
|
||||
rm -rf "$VENV_DIR"
|
||||
echo "Error: could not create the virtual environment."
|
||||
echo " The Python venv/ensurepip component is missing or broken."
|
||||
echo " Debian/Ubuntu: sudo apt install python3-venv"
|
||||
echo " Fedora: sudo dnf install python3-libs"
|
||||
echo " Arch: venv and ensurepip are part of python"
|
||||
echo " Install it and run ./setup.sh again."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
source "$VENV_DIR/bin/activate"
|
||||
PIP="$VENV_DIR/bin/pip"
|
||||
|
||||
Reference in new issue
Block a user