From b124709bcd723c0fde014b0621f4c2e334742176 Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Mon, 28 Jul 2025 16:04:49 -0700 Subject: [PATCH] fix: use virtual environment in CI instead of system packages - uv-managed Python environments don't allow --system installs - Create and activate virtual environment before installing packages - Update all CI steps to use the virtual environment --- .github/workflows/build-reusable.yml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-reusable.yml b/.github/workflows/build-reusable.yml index 620bbf6..a23439e 100644 --- a/.github/workflows/build-reusable.yml +++ b/.github/workflows/build-reusable.yml @@ -201,16 +201,20 @@ jobs: - name: Install built packages for testing run: | + # Create a virtual environment + uv venv + source .venv/bin/activate || source .venv/Scripts/activate + # Install the built wheels if [[ "${{ matrix.os }}" == ubuntu-* ]]; then - uv pip install --system packages/leann-core/dist/*.whl - uv pip install --system packages/leann/dist/*.whl + uv pip install packages/leann-core/dist/*.whl + uv pip install packages/leann/dist/*.whl fi - uv pip install --system packages/leann-backend-hnsw/dist/*.whl - uv pip install --system packages/leann-backend-diskann/dist/*.whl + uv pip install packages/leann-backend-hnsw/dist/*.whl + uv pip install packages/leann-backend-diskann/dist/*.whl # Install test dependencies using extras - uv pip install --system -e ".[test]" + uv pip install -e ".[test]" - name: Run tests with pytest env: @@ -220,11 +224,17 @@ jobs: TOKENIZERS_PARALLELISM: false PYTORCH_ENABLE_MPS_FALLBACK: 0 # Disable MPS on macOS CI to avoid memory issues run: | + # Activate virtual environment + source .venv/bin/activate || source .venv/Scripts/activate + # Run all tests pytest tests/ - name: Run sanity checks (optional) run: | + # Activate virtual environment + source .venv/bin/activate || source .venv/Scripts/activate + # Run distance function tests if available if [ -f test/sanity_checks/test_distance_functions.py ]; then echo "Running distance function sanity checks..."