This is an automated email from the ASF dual-hosted git repository.
yongwww pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new f8dc0fb46f [REFACTOR][CI] Modernize Python dependency management with
uv (#18812)
f8dc0fb46f is described below
commit f8dc0fb46f5bb0c423ab9854509c87f1d9cd3e97
Author: Masahiro Hiramori <[email protected]>
AuthorDate: Wed Feb 25 14:04:55 2026 +0900
[REFACTOR][CI] Modernize Python dependency management with uv (#18812)
This PR modernizes Python tooling in CI by migrating Python interpreter
installation, venv creation and package installation to uv.
---
docker/Dockerfile.ci_arm | 7 +-
docker/Dockerfile.ci_cpu | 8 ++-
docker/Dockerfile.ci_gpu | 11 ++--
docker/Dockerfile.ci_lint | 9 ++-
docker/Dockerfile.ci_wasm | 7 +-
docker/install/ubuntu_install_core.sh | 1 +
docker/install/ubuntu_install_coreml.sh | 2 +-
docker/install/ubuntu_install_cuda_python.sh | 2 +-
docker/install/ubuntu_install_dgl.sh | 2 +-
docker/install/ubuntu_install_gluoncv.sh | 2 +-
docker/install/ubuntu_install_jax.sh | 6 +-
docker/install/ubuntu_install_nnef.sh | 2 +-
docker/install/ubuntu_install_onnx.sh | 6 +-
docker/install/ubuntu_install_python.sh | 75 +++++-----------------
docker/install/ubuntu_install_python_package.sh | 34 +++++-----
docker/install/ubuntu_install_redis.sh | 2 +-
docker/install/ubuntu_install_sphinx.sh | 22 +++----
docker/install/ubuntu_install_tensorflow.sh | 2 +-
.../install/ubuntu_install_tensorflow_aarch64.sh | 2 +-
docker/install/ubuntu_install_tflite.sh | 2 +-
20 files changed, 93 insertions(+), 111 deletions(-)
diff --git a/docker/Dockerfile.ci_arm b/docker/Dockerfile.ci_arm
index a27e77da51..b46bcd4cf5 100644
--- a/docker/Dockerfile.ci_arm
+++ b/docker/Dockerfile.ci_arm
@@ -19,6 +19,7 @@
# tag: v0.02
FROM ubuntu:22.04
+COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -47,11 +48,15 @@ ENV PATH=/opt/sccache:$PATH
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
RUN bash /install/ubuntu_install_llvm.sh
+ENV UV_NO_CACHE=1
+ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
+ENV UV_MANAGED_PYTHON=1
+
ENV TVM_VENV=/venv/apache-tvm-py3.10
-COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
RUN bash /install/ubuntu_install_python.sh 3.10
ENV PATH=${TVM_VENV}/bin:$PATH
+ENV VIRTUAL_ENV=${TVM_VENV}
ENV PYTHONNOUSERSITE=1
COPY install/ubuntu_install_python_package.sh
/install/ubuntu_install_python_package.sh
diff --git a/docker/Dockerfile.ci_cpu b/docker/Dockerfile.ci_cpu
index b02f11e51f..e852b417ff 100644
--- a/docker/Dockerfile.ci_cpu
+++ b/docker/Dockerfile.ci_cpu
@@ -17,6 +17,7 @@
# CI docker CPU env
FROM ubuntu:22.04
+COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -35,11 +36,16 @@ RUN bash /install/ubuntu_install_cmake.sh
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
RUN bash /install/ubuntu_install_googletest.sh
+ENV UV_NO_CACHE=1
+ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
+ENV UV_MANAGED_PYTHON=1
+
ENV TVM_VENV=/venv/apache-tvm-py3.10
-COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
RUN bash /install/ubuntu_install_python.sh 3.10
+RUN uv --version
ENV PATH=${TVM_VENV}/bin:$PATH
+ENV VIRTUAL_ENV=${TVM_VENV}
# Disable .local directory from affecting CI.
ENV PYTHONNOUSERSITE=1
diff --git a/docker/Dockerfile.ci_gpu b/docker/Dockerfile.ci_gpu
index 6acf7b5637..2adb2cf5bf 100644
--- a/docker/Dockerfile.ci_gpu
+++ b/docker/Dockerfile.ci_gpu
@@ -18,6 +18,7 @@
# CI docker GPU env
# tag: v0.60
FROM nvidia/cuda:12.8.1-cudnn-devel-ubuntu22.04
+COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -42,18 +43,20 @@ RUN bash /install/ubuntu_install_cmake.sh
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
RUN bash /install/ubuntu_install_googletest.sh /googletest
+ENV UV_NO_CACHE=1
+ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
+ENV UV_MANAGED_PYTHON=1
+
ENV TVM_VENV=/venv/apache-tvm-py3.10
-COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
RUN bash /install/ubuntu_install_python.sh 3.10
+RUN uv --version
ENV PATH=${TVM_VENV}/bin:$PATH
+ENV VIRTUAL_ENV=${TVM_VENV}
# Disable .local directory from affecting CI.
ENV PYTHONNOUSERSITE=1
-# Globally disable pip cache
-RUN pip config set global.no-cache-dir false
-
COPY install/ubuntu_install_llvm.sh /install/ubuntu_install_llvm.sh
RUN bash /install/ubuntu_install_llvm.sh
diff --git a/docker/Dockerfile.ci_lint b/docker/Dockerfile.ci_lint
index ed32cf97af..45106d8abd 100644
--- a/docker/Dockerfile.ci_lint
+++ b/docker/Dockerfile.ci_lint
@@ -19,6 +19,7 @@
# CI docker lint env
# tag: v0.60
FROM ubuntu:22.04
+COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -31,16 +32,20 @@ RUN bash /install/ubuntu_setup_tz.sh
RUN apt-get update && \
apt-install-and-clear -y wget git sudo make parallel doxygen graphviz curl
shellcheck ca-certificates curl gnupg
+ENV UV_NO_CACHE=1
+ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
+ENV UV_MANAGED_PYTHON=1
+
ENV TVM_VENV=/venv/apache-tvm-py3.10
-COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
RUN bash /install/ubuntu_install_python.sh 3.10
ENV PATH=${TVM_VENV}/bin:$PATH
+ENV VIRTUAL_ENV=${TVM_VENV}
# Disable .local directory from affecting CI.
ENV PYTHONNOUSERSITE=1
-RUN pip3 install cpplint==1.6.1 pylint==2.17.2 mypy==0.902 black==22.12.0
flake8==3.9.2 blocklint==0.2.3 jinja2==3.0.3
+RUN uv pip install cpplint==1.6.1 pylint==2.17.2 mypy==0.902 black==22.12.0
flake8==3.9.2 blocklint==0.2.3 jinja2==3.0.3
# java deps for rat
COPY install/ubuntu_install_java.sh /install/ubuntu_install_java.sh
diff --git a/docker/Dockerfile.ci_wasm b/docker/Dockerfile.ci_wasm
index e5ffb9ccfd..cb3bbd59fd 100644
--- a/docker/Dockerfile.ci_wasm
+++ b/docker/Dockerfile.ci_wasm
@@ -15,6 +15,7 @@
# specific language governing permissions and limitations
# under the License.
FROM ubuntu:22.04
+COPY --from=ghcr.io/astral-sh/uv:0.10.5 /uv /uvx /bin/
COPY utils/apt-install-and-clear.sh /usr/local/bin/apt-install-and-clear
COPY utils/download-and-verify.sh /usr/local/bin/download-and-verify
@@ -33,11 +34,15 @@ RUN bash /install/ubuntu_install_cmake.sh
COPY install/ubuntu_install_googletest.sh /install/ubuntu_install_googletest.sh
RUN bash /install/ubuntu_install_googletest.sh
+ENV UV_NO_CACHE=1
+ENV UV_PYTHON_INSTALL_DIR=/opt/uv/python
+ENV UV_MANAGED_PYTHON=1
+
ENV TVM_VENV=/venv/apache-tvm-py3.10
-COPY python/bootstrap/lockfiles /install/python/bootstrap/lockfiles
COPY install/ubuntu_install_python.sh /install/ubuntu_install_python.sh
RUN bash /install/ubuntu_install_python.sh 3.10
ENV PATH=${TVM_VENV}/bin:$PATH
+ENV VIRTUAL_ENV=${TVM_VENV}
# Disable .local directory from affecting CI.
ENV PYTHONNOUSERSITE=1
diff --git a/docker/install/ubuntu_install_core.sh
b/docker/install/ubuntu_install_core.sh
index c4c6f6b0bc..40e422e6af 100755
--- a/docker/install/ubuntu_install_core.sh
+++ b/docker/install/ubuntu_install_core.sh
@@ -30,6 +30,7 @@ apt-get update && apt-install-and-clear -y
--no-install-recommends \
g++ \
gdb \
git \
+ gnupg \
graphviz \
libcurl4-openssl-dev \
libopenblas-dev \
diff --git a/docker/install/ubuntu_install_coreml.sh
b/docker/install/ubuntu_install_coreml.sh
index 18802a8943..3b474ca6f9 100755
--- a/docker/install/ubuntu_install_coreml.sh
+++ b/docker/install/ubuntu_install_coreml.sh
@@ -20,4 +20,4 @@ set -e
set -u
set -o pipefail
-pip3 install coremltools
+uv pip install coremltools==8.3.0
diff --git a/docker/install/ubuntu_install_cuda_python.sh
b/docker/install/ubuntu_install_cuda_python.sh
index eb4efac5c0..dbb97f52f3 100644
--- a/docker/install/ubuntu_install_cuda_python.sh
+++ b/docker/install/ubuntu_install_cuda_python.sh
@@ -20,4 +20,4 @@ set -e
set -u
set -o pipefail
-pip3 install cuda-python
+uv pip install cuda-python==12.8.0
diff --git a/docker/install/ubuntu_install_dgl.sh
b/docker/install/ubuntu_install_dgl.sh
index b42b10575c..48b61f5f94 100755
--- a/docker/install/ubuntu_install_dgl.sh
+++ b/docker/install/ubuntu_install_dgl.sh
@@ -20,4 +20,4 @@ set -e
set -u
set -o pipefail
-pip3 install dgl==v1.0.0 -f https://data.dgl.ai/wheels/repo.html
+uv pip install dgl==v1.0.0 -f https://data.dgl.ai/wheels/repo.html
diff --git a/docker/install/ubuntu_install_gluoncv.sh
b/docker/install/ubuntu_install_gluoncv.sh
index d42705b86e..434480257b 100755
--- a/docker/install/ubuntu_install_gluoncv.sh
+++ b/docker/install/ubuntu_install_gluoncv.sh
@@ -20,4 +20,4 @@ set -e
set -u
set -o pipefail
-pip3 install gluoncv
+uv pip install gluoncv==0.10.5.post0
diff --git a/docker/install/ubuntu_install_jax.sh
b/docker/install/ubuntu_install_jax.sh
index 1914990916..7d7020b986 100644
--- a/docker/install/ubuntu_install_jax.sh
+++ b/docker/install/ubuntu_install_jax.sh
@@ -22,14 +22,14 @@ set -o pipefail
# Install jax and jaxlib
if [ "$1" == "cuda" ]; then
- pip3 install --upgrade \
+ uv pip install --upgrade \
jaxlib~=0.4.9 \
"jax[cuda11_pip]~=0.4.9" -f
https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
else
- pip3 install --upgrade \
+ uv pip install --upgrade \
jaxlib~=0.4.9 \
"jax[cpu]~=0.4.9"
fi
# Install flax
-pip3 install flax~=0.6.9
+uv pip install flax~=0.6.9
diff --git a/docker/install/ubuntu_install_nnef.sh
b/docker/install/ubuntu_install_nnef.sh
index c7bc59bddf..ebde6484ee 100755
--- a/docker/install/ubuntu_install_nnef.sh
+++ b/docker/install/ubuntu_install_nnef.sh
@@ -20,5 +20,5 @@ set -e
set -u
set -o pipefail
-pip3 install \
+uv pip install \
nnef==1.0.8
diff --git a/docker/install/ubuntu_install_onnx.sh
b/docker/install/ubuntu_install_onnx.sh
index 72cf952107..90063f1bf1 100755
--- a/docker/install/ubuntu_install_onnx.sh
+++ b/docker/install/ubuntu_install_onnx.sh
@@ -27,17 +27,17 @@ PYTHON_VERSION=$(python3 -c "import sys;
print(f'{sys.version_info.major}.{sys.v
DEVICE=${1:-cpu}
# Install the onnx package
-pip3 install \
+uv pip install \
onnx==1.20.1 \
onnxruntime==1.23.2 \
onnxoptimizer==0.4.2
if [ "$DEVICE" == "cuda" ]; then
- pip3 install \
+ uv pip install \
torch==2.10.0 \
torchvision==0.25.0
else
- pip3 install \
+ uv pip install \
torch==2.10.0 \
torchvision==0.25.0 \
--extra-index-url https://download.pytorch.org/whl/cpu
diff --git a/docker/install/ubuntu_install_python.sh
b/docker/install/ubuntu_install_python.sh
index 71254c907b..7f02a81e57 100755
--- a/docker/install/ubuntu_install_python.sh
+++ b/docker/install/ubuntu_install_python.sh
@@ -33,53 +33,26 @@ if [ "$#" -lt 1 ]; then
fi
PYTHON_VERSION=$1
-case "$PYTHON_VERSION" in
- 3.10|3.11) ;;
- *)
- echo "Only 3.10 and 3.11 versions are supported in this script."
- exit -1
- ;;
-esac
-
+# Install base dependencies required by this script.
apt-get update
+apt-install-and-clear -y acl
-# Ensure lsb-release is installed.
-apt-install-and-clear -y lsb-core software-properties-common
-
-release=$(lsb_release -sc)
-case "${release}" in
- jammy)
- if [ "${PYTHON_VERSION}" == "3.10" ] || \
- [ "${PYTHON_VERSION}" == "3.11" ]; then
- add-apt-repository -y ppa:deadsnakes/ppa
- fi
- ;;
- *)
- echo "Don't know which version of python to install for lsb-release
${release}"
- exit 2
- ;;
-esac
-
-# Install python and pip. Don't modify this to add Python package dependencies,
-# instead modify install_python_package.sh
-apt-install-and-clear -y \
- acl \
- python${PYTHON_VERSION} \
- python${PYTHON_VERSION}-dev \
- python3-pip \
- python${PYTHON_VERSION}-venv
-
-update-alternatives --install /usr/bin/python3 python3
/usr/bin/python${PYTHON_VERSION} 1
-update-alternatives --install /usr/bin/python python
/usr/bin/python${PYTHON_VERSION} 1
+# Install managed Python to a shared location so both root and the CI runtime
user can use it.
+UV_PYTHON_INSTALL_DIR=${UV_PYTHON_INSTALL_DIR:-/opt/uv/python}
+export UV_PYTHON_INSTALL_DIR
+export UV_MANAGED_PYTHON=${UV_MANAGED_PYTHON:-1}
+mkdir -p "${UV_PYTHON_INSTALL_DIR}"
+chmod 755 "${UV_PYTHON_INSTALL_DIR}"
+uv python install "${PYTHON_VERSION}"
# Allow disabling user site-packages, even with sudo; this makes it harder to
repro CI failures
# locally because it's hard to tell what might be in this directory.
echo "Defaults env_keep += \"PYTHONNOUSERSITE\""
>/etc/sudoers.d/91-preserve-python-nousersite
export PYTHONNOUSERSITE=1
-venv_dir="$(python3 -c "import
os.path;print(os.path.dirname(\"${TVM_VENV}\"))")"
+venv_dir="$(dirname "${TVM_VENV}")"
mkdir -p "${venv_dir}"
-python3 -mvenv "${TVM_VENV}"
+uv venv --python "${PYTHON_VERSION}" "${TVM_VENV}"
# NOTE: Only in python3.9 does venv guarantee it creates the python3.X binary.
# This is needed so that CMake's find_package(PythonInterp) works inside the
venv.
@@ -88,32 +61,16 @@ if [ ! -e "${TVM_VENV}/bin/python${PYTHON_VERSION}" ]; then
ln -s "${TVM_VENV}/bin/python" "${TVM_VENV}/bin/python${PYTHON_VERSION}"
fi
-# Update pip to match version used to produce requirements-hashed.txt. This
step
-# is necessary so that pip's dependency solver is recent.
-if [ -f
"/install/python/bootstrap/lockfiles/constraints-${PYTHON_VERSION}.txt" ]; then
- pip_spec=$(tac
/install/python/bootstrap/lockfiles/constraints-${PYTHON_VERSION}.txt | grep -m
1 'pip==')
- ${TVM_VENV}/bin/pip install -U --require-hashes -r <(echo "${pip_spec}") \
- -c
/install/python/bootstrap/lockfiles/constraints-${PYTHON_VERSION}.txt
-
- # Python configuration
- ${TVM_VENV}/bin/pip config set global.no-cache-dir true # Never cache
packages
-
- # Now install the remaining base packages.
- ${TVM_VENV}/bin/pip install \
- --require-hashes \
- -r
/install/python/bootstrap/lockfiles/constraints-${PYTHON_VERSION}.txt
-fi
-
-addgroup tvm-venv
+addgroup tvm-venv || true
chgrp -R tvm-venv "${TVM_VENV}"
setfacl -R -d -m group:tvm-venv:rwx "${TVM_VENV}"
setfacl -R -m group:tvm-venv:rwx "${TVM_VENV}"
# Prevent further use of pip3 via the system.
# There may be multiple (i.e. from python3-pip apt package and pip3 install
-U).
-while [ "$(which pip3)" != "" ]; do
- rm "$(which pip3)"
+while command -v pip3 >/dev/null 2>&1; do
+ rm -f "$(command -v pip3)"
done
-while [ "$(which pip)" != "" ]; do
- rm "$(which pip)"
+while command -v pip >/dev/null 2>&1; do
+ rm -f "$(command -v pip)"
done
diff --git a/docker/install/ubuntu_install_python_package.sh
b/docker/install/ubuntu_install_python_package.sh
index c715619b58..d69f732f59 100755
--- a/docker/install/ubuntu_install_python_package.sh
+++ b/docker/install/ubuntu_install_python_package.sh
@@ -21,25 +21,25 @@ set -u
set -o pipefail
# install libraries for python package on ubuntu
-pip3 install --upgrade \
- "Pygments>=2.4.0" \
- cloudpickle \
- cython \
- mypy \
+uv pip install --upgrade \
+ "Pygments~=2.19" \
+ "cloudpickle~=3.1" \
+ "cython~=3.0" \
+ "mypy~=1.15" \
numpy==1.26.* \
- orderedset \
- packaging \
+ "orderedset~=2.0" \
+ "packaging~=25.0" \
Pillow==12.1.1 \
- psutil \
- pytest \
+ "psutil~=7.0" \
+ "pytest~=8.3" \
git+https://github.com/tlc-pack/tlcpack-sphinx-addon.git@768ec1dce349fe4708f6ad68be1ebb3f3dabafa1
\
- pytest-profiling \
- pytest-xdist \
+ "pytest-profiling~=1.8" \
+ "pytest-xdist~=3.6" \
pytest-rerunfailures==16.1 \
- requests \
- scipy \
- Jinja2 \
+ "requests~=2.32" \
+ "scipy~=1.13" \
+ "Jinja2~=3.1" \
junitparser==4.0.2 \
- six \
- tornado \
- "ml_dtypes>=0.5.1"
+ "six~=1.17" \
+ "tornado~=6.4" \
+ "ml_dtypes~=0.5"
diff --git a/docker/install/ubuntu_install_redis.sh
b/docker/install/ubuntu_install_redis.sh
index 240df8715d..6b0e093cb6 100755
--- a/docker/install/ubuntu_install_redis.sh
+++ b/docker/install/ubuntu_install_redis.sh
@@ -21,5 +21,5 @@ set -u
set -o pipefail
apt-get update && apt-install-and-clear -y redis-server
-pip3 install \
+uv pip install \
xgboost==3.2.0
diff --git a/docker/install/ubuntu_install_sphinx.sh
b/docker/install/ubuntu_install_sphinx.sh
index bbaf049766..123b1d5e7f 100755
--- a/docker/install/ubuntu_install_sphinx.sh
+++ b/docker/install/ubuntu_install_sphinx.sh
@@ -20,14 +20,14 @@ set -e
set -u
set -o pipefail
-pip3 install \
- autodocsumm \
- commonmark \
- docutils \
- Image \
- matplotlib \
- sphinx \
- sphinx_autodoc_annotation \
- sphinx-gallery \
- sphinx_rtd_theme \
-
https://github.com/tlc-pack/tlcpack-sphinx-addon/archive/refs/tags/v0.2.3.zip
+uv pip install \
+ autodocsumm==0.2.7 \
+ commonmark==0.9.1 \
+ docutils==0.16 \
+ image==1.5.33 \
+ matplotlib==3.3.4 \
+ sphinx==4.2.0 \
+ sphinx_autodoc_annotation~=1.0 \
+
git+https://github.com/sphinx-gallery/sphinx-gallery.git@6142f1791151849b5bec4bf3959f75697ba226cd
\
+ sphinx_rtd_theme==1.0.0 \
+
git+https://github.com/tlc-pack/tlcpack-sphinx-addon.git@768ec1dce349fe4708f6ad68be1ebb3f3dabafa1
diff --git a/docker/install/ubuntu_install_tensorflow.sh
b/docker/install/ubuntu_install_tensorflow.sh
index 98433469fa..fe3e798973 100755
--- a/docker/install/ubuntu_install_tensorflow.sh
+++ b/docker/install/ubuntu_install_tensorflow.sh
@@ -20,4 +20,4 @@ set -e
set -u
set -o pipefail
-pip3 install tensorflow==2.19.0
+uv pip install tensorflow==2.19.0
diff --git a/docker/install/ubuntu_install_tensorflow_aarch64.sh
b/docker/install/ubuntu_install_tensorflow_aarch64.sh
index 327aae7902..1093b4dffe 100755
--- a/docker/install/ubuntu_install_tensorflow_aarch64.sh
+++ b/docker/install/ubuntu_install_tensorflow_aarch64.sh
@@ -22,6 +22,6 @@ set -euxo pipefail
apt-install-and-clear -y --no-install-recommends libhdf5-dev
# TensorFlow package versions are aligned with ubuntu_install_tensorflow.sh.
-pip3 install \
+uv pip install \
numpy==1.26.* \
tensorflow==2.19.0
diff --git a/docker/install/ubuntu_install_tflite.sh
b/docker/install/ubuntu_install_tflite.sh
index 050a611880..bb54758e53 100755
--- a/docker/install/ubuntu_install_tflite.sh
+++ b/docker/install/ubuntu_install_tflite.sh
@@ -34,7 +34,7 @@ cmake --install .
cd ..
# Install flatbuffers python packages.
-pip3 install flatbuffers
+uv pip install flatbuffers==24.3.25
# Build the TFLite static library, necessary for building with TFLite ON.
# The library is built at: