Hacker News new | ask | show | jobs
by singularity2001 446 days ago
uv add --script wordlookup.py httpx

# /// script # requires-python = ">=3.13" # dependencies = [ # "httpx", # ] # ///

import httpx

That seems pretty redundant. Why can't UV just infer the dependencies from the import statements?

3 comments

There's a few things:

- uv won't necessarily know which modules aren't already present, because they can load from modules being developed in the current directory

- It's not easy to determine what imports will happen in a Python script due to transitive dependencies and dynamic loading

- The names of python modules are not always the same as the packages that contain them - for example the yaml module comes from the pyyaml package

Also the second line of the Zen of Python is "explicit is better than implicit": https://peps.python.org/pep-0020/

- It's not easy to determine what imports will happen

  fair enough, but adding option to auto import from the main file would solve 97% of use cases
- uv won't necessarily know which modules aren't already present

  easy to check
- The names of python modules are not always the same

  great opportunity to add convenient simple mapping / name resolution
- Zen

Should DRY don't repeat yourself be higher up?

This is covered in the Pep 723 document, it's not a uv invention.

https://peps.python.org/pep-0723/#why-not-infer-the-requirem...

which version of httpx?
same as in dependencies = [ # "httpx", # ]

the current one by default