2026-02-21 18:35:20 -06:00

74 lines
1.8 KiB
Bash

#!/usr/bin/env bash
# Deterministic installer for Project_Journal (Python 3.14)
# Defaults: CPU profile, no optional NLP model.
#
# Usage:
# ./installreqs.sh
# ./installreqs.sh --gpu
# ./installreqs.sh --with-nlp
# ./installreqs.sh --gpu --with-nlp
set -euo pipefail
REQ_FILE="requirements_cpu_only.txt"
WITH_NLP=0
VENV_DIR=".venv"
while [[ $# -gt 0 ]]; do
case "$1" in
--gpu)
REQ_FILE="requirements_gpu.txt"
shift
;;
--with-nlp)
WITH_NLP=1
shift
;;
--venv)
VENV_DIR="$2"
shift 2
;;
-h|--help)
echo "Usage: $0 [--gpu] [--with-nlp] [--venv PATH]"
exit 0
;;
*)
echo "Unknown option: $1" >&2
echo "Usage: $0 [--gpu] [--with-nlp] [--venv PATH]"
exit 1
;;
esac
done
if [[ ! -f "$REQ_FILE" ]]; then
echo "Error: $REQ_FILE not found." >&2
exit 1
fi
echo "Creating/updating virtual environment at: $VENV_DIR"
python3.14 -m venv "$VENV_DIR"
# shellcheck disable=SC1090
source "$VENV_DIR/bin/activate"
python -m pip install --upgrade pip setuptools wheel
if [[ "$REQ_FILE" == "requirements_cpu_only.txt" ]]; then
echo "Installing CPU dependency profile..."
python -m pip install --extra-index-url https://download.pytorch.org/whl/cpu -r "$REQ_FILE"
else
echo "Installing GPU dependency profile..."
python -m pip install -r "$REQ_FILE"
fi
if [[ $WITH_NLP -eq 1 ]]; then
echo "Installing optional NLP dependencies..."
python -m pip install -r requirements_nlp_optional.txt
echo "Attempting spaCy model install (ignored if unsupported on this Python)..."
python -m spacy download en_core_web_sm || true
fi
echo "Done."
echo "Activate with: source $VENV_DIR/bin/activate"