prototype: use pyproject and uv to build distribution

Goals:

* remove the need of a custom tool to install a collection of python
  packages AKA `llama stack build`
* use the power of 'uv', which was designed to manage dependencies
* `llama stack build` can "probably" go away and be replaced with uv

Howto, with the pyproject, you can install an Ollama distribution in a
virtual env like so:

```
uv venv --python 3.10 ollama-distro
source ollama-distro/bin/activate
uv sync --extra ollama
llama stack run llama_stack/templates/ollama/run.yaml
```

Caveats:

* external provider, we could still use a build file or add
the known external providers to the pyproject?
* growth of the uv.lock?

We create a requirements.txt for convenience as some users are most
familiar with this format than looking at pyproject.

Signed-off-by: Sébastien Han <seb@redhat.com>
This commit is contained in:
Sébastien Han 2025-05-27 20:31:57 +02:00
parent 6832e8a658
commit b6ebbe1bc0
No known key found for this signature in database
13 changed files with 5579 additions and 679 deletions

View file

@ -14,8 +14,6 @@ anyio==4.8.0
# llama-stack-client
# openai
# starlette
async-timeout==5.0.1 ; python_full_version < '3.11'
# via aiohttp
attrs==25.1.0
# via
# aiohttp
@ -40,8 +38,6 @@ distro==1.9.0
# openai
ecdsa==0.19.1
# via python-jose
exceptiongroup==1.2.2 ; python_full_version < '3.11'
# via anyio
fastapi==0.115.8
# via llama-stack
filelock==3.17.0
@ -58,6 +54,8 @@ h11==0.16.0
# via
# httpcore
# llama-stack
hf-xet==1.1.4 ; (platform_machine == 'aarch64' and sys_platform != 'darwin') or (platform_machine == 'amd64' and sys_platform != 'darwin') or (platform_machine == 'arm64' and sys_platform != 'darwin') or (platform_machine == 'x86_64' and sys_platform != 'darwin')
# via huggingface-hub
httpcore==1.0.9
# via httpx
httpx==0.28.1
@ -65,7 +63,9 @@ httpx==0.28.1
# llama-stack
# llama-stack-client
# openai
huggingface-hub==0.29.0
huggingface-hub==0.29.0 ; sys_platform == 'darwin'
# via llama-stack
huggingface-hub==0.33.0 ; sys_platform != 'darwin'
# via llama-stack
idna==3.10
# via
@ -99,7 +99,7 @@ openai==1.71.0
# via llama-stack
packaging==24.2
# via huggingface-hub
pandas==2.2.3
pandas==2.1.1
# via llama-stack-client
pillow==11.1.0
# via llama-stack
@ -147,7 +147,12 @@ referencing==0.36.2
# jsonschema-specifications
regex==2024.11.6
# via tiktoken
requests==2.32.4
requests==2.32.2 ; (python_full_version < '3.12' and sys_platform == 'darwin') or (python_full_version >= '3.12' and sys_platform == 'linux') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')
# via
# huggingface-hub
# llama-stack
# tiktoken
requests==2.32.4 ; (python_full_version < '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform == 'darwin')
# via
# huggingface-hub
# llama-stack
@ -195,15 +200,15 @@ typing-extensions==4.12.2
# fastapi
# huggingface-hub
# llama-stack-client
# multidict
# openai
# pydantic
# pydantic-core
# referencing
# rich
tzdata==2025.1
# via pandas
urllib3==2.3.0
urllib3==2.1.0 ; (python_full_version < '3.12' and platform_machine == 'aarch64' and sys_platform == 'linux') or (python_full_version >= '3.12' and sys_platform == 'darwin')
# via requests
urllib3==2.3.0 ; (python_full_version < '3.12' and sys_platform == 'darwin') or (python_full_version >= '3.12' and sys_platform == 'linux') or (platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')
# via requests
wcwidth==0.2.13
# via prompt-toolkit