#!/bin/bash # # Unified environment activator (venv preferred, conda fallback). # # Usage: # source activate.sh # # Priority: # 1) ./.venv (Python venv) # 2) conda env "searchengine" (legacy) # # Must be sourced if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then echo "ERROR: Please source this script: source activate.sh" >&2 exit 1 fi PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 1) venv (preferred) VENV_ACTIVATE="${PROJECT_ROOT}/.venv/bin/activate" if [[ -f "${VENV_ACTIVATE}" ]]; then # shellcheck disable=SC1090 source "${VENV_ACTIVATE}" ENV_KIND="venv" else # 2) conda fallback (legacy) # 新机器部署:可设置 CONDA_ROOT 指向本机 Conda 路径 # 例如你的 conda 是 ~/anaconda3/bin/conda,则 export CONDA_ROOT=$HOME/anaconda3 CONDA_ROOT="${CONDA_ROOT:-/home/tw/miniconda3}" if [[ -f "${CONDA_ROOT}/etc/profile.d/conda.sh" ]]; then # shellcheck disable=SC1091 source "${CONDA_ROOT}/etc/profile.d/conda.sh" conda activate searchengine ENV_KIND="conda" else echo "ERROR: No .venv found and conda.sh not found at ${CONDA_ROOT}/etc/profile.d/conda.sh" >&2 echo " - Create venv: ./scripts/create_venv.sh" >&2 echo " - Or set CONDA_ROOT to your conda install path" >&2 return 1 fi fi # 如果需要加载 .env 中的环境变量 ENV_FILE="${PROJECT_ROOT}/.env" if [ -f "${ENV_FILE}" ]; then set -a # 自动导出所有变量 # NOTE: This loader tolerates comments/blank lines and strips inline comments. source <(grep -v '^#' "${ENV_FILE}" | grep -v '^$' | sed 's/#.*$//' | sed 's/\r$//') set +a # 关闭自动导出 fi echo "Environment activated (${ENV_KIND}): ${VIRTUAL_ENV:-${CONDA_DEFAULT_ENV:-unknown}}"