Eric J Ma's Website

Let me ship you the Python you need

written by Eric J. Ma on 2025-02-17 | tags: packaging uv tools marimo juv environments


In this blog post, I explore how modern Python tooling is flipping the script on the age-old "which Python should I use?" question. Through my experience with uvx, marimo, and juv, I show how we're moving away from the traditional headache of environment setup and toward a world where tools automatically ship you the exact Python you need. No more environment setup puzzles – just specify your Python version and get straight to work. It's a liberating shift that's changing how I approach one-off Python work, and I think it's pretty exciting!

Recently, I watched Peter Wang's PyBay talk, The Five Demons of Python Packaging That Fuel Our Persistent Nightmare, and have been reflecting on a quote from Peter's talk:

...I don't care you'll get a Python we'll get you the Python you need what's the thing you want to do



It's the difference between first worrying about "what Python do you have", instead of worrying about "what Python do you need".

uv, and in particular uvx, really adopts this paradigm. When I install a tool using uv tool or run a tool using uvx <toolname>, I can specify the exact Python interpreter version that I'd like:

uv tool install <toolname> --python <version_number>
uvx <toolname> --python <version_number> ...tool args here...

This is incredibly liberating as a user who is looking to install globally-available tools.

It's come to the point that for one-off work, I now do one of the following.

# If I'm in the mood for marimo:
uvx marimo edit --sandbox /path/to/notebook.py

# If I'm in the mood for jlab:
uvx juv run /path/to/notebook.ipynb

uvx coupled with marimo/juv and PEP723 now helps invert the process of getting started. There's no more finagling with first creating a Python environment and then getting to work. Instead, we just get to work and install packages on an as-needed basis, done on-the-fly. marimo and juv will ship you the Python that you need to do what you want to do. That's pretty rad.


Cite this blog post:
@article{
    ericmjl-2025-let-need,
    author = {Eric J. Ma},
    title = {Let me ship you the Python you need},
    year = {2025},
    month = {02},
    day = {17},
    howpublished = {\url{https://ericmjl.github.io}},
    journal = {Eric J. Ma's Blog},
    url = {https://ericmjl.github.io/blog/2025/2/17/let-me-ship-you-the-python-you-need},
}
  

I send out a newsletter with tips and tools for data scientists. Come check it out at Substack.

If you would like to sponsor the coffee that goes into making my posts, please consider GitHub Sponsors!

Finally, I do free 30-minute GenAI strategy calls for teams that are looking to leverage GenAI for maximum impact. Consider booking a call on Calendly if you're interested!