From c56b6548309441378e1d75f6661a442616dee26d Mon Sep 17 00:00:00 2001 From: Casey Rodarmor Date: Thu, 12 Dec 2024 15:19:50 -0800 Subject: [PATCH] Document running python recipes with `uv` (#2526) --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/README.md b/README.md index 586ad997fe..027e556718 100644 --- a/README.md +++ b/README.md @@ -2802,6 +2802,41 @@ the final argument. For example, on Windows, if a recipe starts with `#! py`, the final command the OS runs will be something like `py C:\Temp\PATH_TO_SAVED_RECIPE_BODY`. +### Python Recipes with `uv` + +[`uv`](https://github.com/astral-sh/uv) is an excellent cross-platform python +project manager, written in Rust. + +Using the `[script]` attribute and `script-interpreter` setting, `just` can +easily be configured to run Python recipes with `uv`: + +```just +set unstable + +set script-interpreter := ['uv', 'run', '--script'] + +[script] +hello: + print("Hello from Python!") + +[script] +goodbye: + # /// script + # requires-python = ">=3.11" + # dependencies=["sh"] + # /// + import sh + print(sh.echo("Goodbye from Python!"), end='') +``` + +Of course, a shebang also works: + +```just +hello: + #!/usr/bin/env uv run --script + print("Hello from Python!") +``` + ### Script Recipes Recipes with a `[script(COMMAND)]`1.32.0 attribute are run as