Now showing · a technical tutorial
uv, end to end
Install uv, start a project, add and remove packages, lock and sync, run tools and scripts. Seven sections, made with DeckTalk from the script below.
Make one like it
$ curl -LsSf https://decktalk.ai/install.sh | sh
It installs uv, then DeckTalk, and never runs sudo. Two more lines make a first film, with placeholder narration and no key.
3:167 sections1920 × 1080, 25 fpsvoice and words from one build
script.md
Each ## N. heading is one cut of the film. A [beat] is a short pause and is not spoken. Numbers and symbols are written the way the voice says them.
1. What uv is 0:00
uv is one program that replaces a whole shelf of Python tools. [beat] It installs packages, it builds virtual environments, it resolves a lockfile, and it installs Python itself. [beat] It is written in Rust, and it keeps one cache for your whole machine, so a wheel you have already downloaded is linked into a new project rather than fetched twice. [beat] That is why a cold install finishes in seconds.
2. Install uv 0:26
Before any of that, uv has to be on your machine. [beat] Install it with the standalone installer, which needs no Python on the machine first. [beat] On macOS and Linux, pipe the script from astral dot sh into your shell. [beat] On Windows, run the same script through powershell. [beat] Homebrew and pip ex both carry uv as well, and either one is fine. [beat] From then on, uv self update moves you to the newest release.
3. Start a project 0:52
With uv installed, the next step is a project. [beat] Run uv init and give your project a name. [beat] uv writes four files: a pyproject dot toml that declares the project, a read me, a starter module, and a dot python dash version file that pins the interpreter this project wants. [beat] Nothing is installed yet, and there is no virtual environment yet either. [beat] uv builds one for you the first time you ask it to run something.
4. Add and remove dependencies 1:24
An empty project needs packages, so add your first one. [beat] uv add httpx is how a package joins your project. [beat] It resolves the dependency, writes it into pyproject dot toml, updates the lockfile, and installs it into the environment, all in one step. [beat] For a package you need only while developing, name the group, so uv add dash dash group dev pytest records pytest under the dependency groups table. [beat] uv remove takes a package back out, and the lockfile and the environment both follow it.
5. Lock and sync 1:57
Every one of those steps touched the lockfile. [beat] uv lock writes a lockfile that pins every package, for every platform your project claims to support. [beat] uv sync then makes your environment match that lockfile exactly, installing what is missing and removing whatever does not belong. [beat] Commit the lockfile, because it is what makes the install reproducible for everybody else. [beat] In continuous integration, pass the frozen flag, so uv installs straight from the lockfile and never resolves it again.
6. Run tools and scripts 2:29
With everything in sync, it is time to run something. [beat] uv run runs a command inside your project's environment, and it syncs before it starts, so what runs is always what the lockfile says. [beat] uvx runs a tool once without installing it anywhere at all. [beat] uv tool install keeps a tool on your path for good. [beat] And a single file script can declare its own dependencies in a comment header at the top, so running it builds an environment just for that file and throws it away afterwards.
7. The whole workflow 2:58
So that is uv, and your project fits on one card. [beat] uv init starts it, uv add grows it, uv lock pins it, uv sync matches it, and uv run uses it. [beat] Five commands, one tool. [beat] Go clear the shelf.
Next: how it was made, install DeckTalk, read the quickstart, or watch Halfway, a 38-second pitch made the same way.