This project demonstrates the use of uv Python project manager.
old and new folders contain identical software project.
The "old" project is managed with traditional tools such as pyenv and pip.
The "new" project is managed with uv.
Neither of the folders demonstrate "the right way" to organize project - they only show one sensible way.
The demo project contains a simple server application and a mock algorithm. The algorithm can be installed a package, while the application is not meant to be installed.
Screenshot of the app
- One can mostly forget the virtual environment -
uvtakes care of it - Python version updates do not require manual redoing of the setup
- Better performance for package and Python installations
- No need to add
pyenv(or other similar tool) specific configurations to your system configs uvmaybe helps enforcing clearer structure as your project grows
- As of writing (2025-01-22) uv is still on version 0.5.22 and does not yet have stable API (source: https://docs.astral.sh/uv/reference/policies/versioning/)
- Instead of using uv workspaces project can be managed equally conveniently separately, each having their own virtual environments and configurations.
