setup_translator_venv.sh 1.21 KB
#!/bin/bash
#
# Create isolated venv for translator service (.venv-translator).
#
set -euo pipefail

PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "${PROJECT_ROOT}"

VENV_DIR="${PROJECT_ROOT}/.venv-translator"
PYTHON_BIN="${PYTHON_BIN:-python3}"
TMP_DIR="${TRANSLATOR_PIP_TMPDIR:-${PROJECT_ROOT}/.tmp/translator-pip}"

if ! command -v "${PYTHON_BIN}" >/dev/null 2>&1; then
  echo "ERROR: python not found: ${PYTHON_BIN}" >&2
  exit 1
fi

if [[ -d "${VENV_DIR}" && ! -f "${VENV_DIR}/bin/activate" ]]; then
  echo "Found broken venv at ${VENV_DIR}, recreating..."
  rm -rf "${VENV_DIR}"
fi

if [[ ! -d "${VENV_DIR}" ]]; then
  echo "Creating ${VENV_DIR}"
  "${PYTHON_BIN}" -m venv "${VENV_DIR}"
else
  echo "Reusing ${VENV_DIR}"
fi

mkdir -p "${TMP_DIR}"
export TMPDIR="${TMP_DIR}"
PIP_ARGS=(--no-cache-dir)

echo "Using TMPDIR=${TMPDIR}"
"${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" --upgrade pip wheel
"${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -r requirements_translator_service.txt

echo
echo "Done."
echo "Translator venv: ${VENV_DIR}"
echo "Download local models: ./.venv-translator/bin/python scripts/download_translation_models.py --all-local"
echo "Start service: ./scripts/start_translator.sh"