Hacker News new | past | comments | ask | show | jobs | submit login

Yes, uv is well suited to that use case by declaring your Python version and/or dependencies right in the script itself:

https://docs.astral.sh/uv/guides/scripts/#declaring-script-d...

You can use an alternate shebang line so you can run the script directly:

  #!/usr/bin/env -S uv run --script
  # /// script
  # requires-python = ">=3.12"
  # dependencies = [
  #   "requests",
  #   "typer-slim",
  # ]
  # ///
  import requests
  import typer
  # ...





Yes but I then still then have to declare all dependencies for all tiny throwaway script, right now I have global python in pyenv and installed tons of plugins and didn't have too much issues with conflicts so was good enough for me

I used to have the same setup - a global tools venv with some useful dependencies.

Uv takes the position that since it’s so fast to install dependencies and create environments, you don’t maintain a global venv.

  uvx ruff file.py
Will setup a venv, install ruff into it, and run over your file. https://docs.astral.sh/uv/guides/tools/

Otherwise you can:

  uv run —-with package file.py
If you don’t want to declare your dependencies.

https://docs.astral.sh/uv/guides/scripts/#running-a-script-w...


How about just install a python version with uv and install everything into that?

Or better, do the above, then create a virtual env, set the virtual env in your.bashrc and install everything into that

Better still... use uv script --init See other comments on this post


You could make an alias for creating a new python script that adds your favorite libraries as dependencies:

  alias newpy='function _newpy() { 
      default_deps=("rich" "requests");
      uv init --script "$1" && uv add "${default_deps[@]}" --script "$1"; 
  }; _newpy'



Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: