Fundamental_Analysis/scripts/setup_backend.sh
2025-10-21 20:17:14 +08:00

66 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "$0")"/.. && pwd)"
BACKEND_DIR="$REPO_ROOT/backend"
VENV_DIR="$REPO_ROOT/.venv"
PYTHON_BIN="python3"
# Allow override: USE_SYSTEM_PYTHON=1 to skip venv
USE_SYSTEM_PYTHON="${USE_SYSTEM_PYTHON:-0}"
# CLEAN=1 to recreate venv
CLEAN="${CLEAN:-0}"
echo "[backend] repo: $REPO_ROOT"
echo "[backend] dir: $BACKEND_DIR"
echo "[backend] checking Python..."
if command -v python3 >/dev/null 2>&1; then
PYTHON_BIN="$(command -v python3)"
elif command -v python >/dev/null 2>&1; then
PYTHON_BIN="$(command -v python)"
else
echo "[backend] ERROR: python3/python not found" >&2
exit 1
fi
echo "[backend] python: $PYTHON_BIN ($("$PYTHON_BIN" -V))"
if [[ "$USE_SYSTEM_PYTHON" == "1" ]]; then
echo "[backend] using system Python (no venv)"
else
if [[ "$CLEAN" == "1" && -d "$VENV_DIR" ]]; then
echo "[backend] CLEAN=1 -> removing existing venv: $VENV_DIR"
rm -rf "$VENV_DIR"
fi
if [[ ! -d "$VENV_DIR" ]]; then
echo "[backend] creating venv: $VENV_DIR"
"$PYTHON_BIN" -m venv "$VENV_DIR"
fi
# Activate venv
# shellcheck disable=SC1091
source "$VENV_DIR/bin/activate"
echo "[backend] venv activated: $VIRTUAL_ENV"
echo "[backend] upgrading pip/setuptools/wheel"
python -m pip install --upgrade pip setuptools wheel
fi
REQ_FILE="$BACKEND_DIR/requirements.txt"
if [[ ! -f "$REQ_FILE" ]]; then
echo "[backend] ERROR: requirements.txt not found at $REQ_FILE" >&2
exit 1
fi
echo "[backend] installing requirements: $REQ_FILE"
pip install -r "$REQ_FILE"
# Show versions
echo "[backend] python version: $(python -V)"
echo "[backend] pip version: $(python -m pip -V)"
if command -v uvicorn >/dev/null 2>&1; then
echo "[backend] uvicorn version: $(python -c 'import uvicorn,sys; print(uvicorn.__version__)' || echo unknown)"
else
echo "[backend] uvicorn not found; you may need it for dev server"
fi
echo "[backend] setup completed."