#!/bin/bash # Setup Python environment for BC ML project. # Run from the project root: bash scripts/setup_env.sh set -euo pipefail cd "$(dirname "$0")/.." PYTHON_BIN="${PYTHON_BIN:-python3}" VENV_DIR="${VENV_DIR:-venv_bcml}" echo "Project directory: $(pwd)" echo "Python command : ${PYTHON_BIN}" echo "Virtual env dir : ${VENV_DIR}" if [ ! -d "${VENV_DIR}" ]; then echo "Creating virtual environment ${VENV_DIR} ..." "${PYTHON_BIN}" -m venv "${VENV_DIR}" fi source "${VENV_DIR}/bin/activate" echo "Python in use : $(which python)" python -V echo "Installing required Python packages ..." python -m pip install --upgrade pip python -m pip install -r requirements.txt echo "Checking imports ..." python - <<'PY' import importlib mods = ["numpy", "pandas", "xarray", "netCDF4", "sklearn", "matplotlib", "yaml", "joblib"] missing = [] for m in mods: try: importlib.import_module(m) except Exception as e: missing.append((m, str(e))) try: import xgboost except Exception as e: missing.append(("xgboost", str(e))) if missing: print("Missing modules:") for m, e in missing: print(f" {m}: {e}") raise SystemExit(1) print("All required modules imported successfully.") PY touch "${VENV_DIR}/.bcml_env_ok" echo "Environment is ready."