setup_embedding_venv.sh
1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
#
# Create isolated venv for embedding service (.venv-embedding).
#
set -euo pipefail
PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "${PROJECT_ROOT}"
VENV_DIR="${PROJECT_ROOT}/.venv-embedding"
PYTHON_BIN="${PYTHON_BIN:-python3}"
TMP_DIR="${EMBEDDING_PIP_TMPDIR:-${PROJECT_ROOT}/.tmp/embedding-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_embedding_service.txt
# Install vendored clip client (for clip-as-service image backend)
"${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -e third-party/clip-as-service/client
if [[ "${INSTALL_LOCAL_ST:-0}" == "1" ]]; then
echo "INSTALL_LOCAL_ST=1 detected. Installing local_st extras..."
"${VENV_DIR}/bin/python" -m pip install "${PIP_ARGS[@]}" -r requirements_embedding_local_st.txt
fi
echo
echo "Done."
echo "Embedding venv: ${VENV_DIR}"
echo "Start service: ./scripts/start_embedding_service.sh"