# Python Packaging

### Overview

Historically Python packaging has been a bit of a mess. There were lots of different tools that did some things well and other things very poorly and distributing applications that use Python was a pain.

<span style="white-space: pre-wrap;">In 2021, I wrote a detailed post about Python package managers and environment managers and the pros and cons of each. At the time, I made recommendations around Miniconda, </span>[PDM](https://notes.jamesravey.me/Software/PDM)<span style="white-space: pre-wrap;"> and Poetry. For pure Python projects (that didn't require specialised C libraries or Nvidia toolkits) Poetry remained the best tool until very recently.</span>

####   


### UV: The Modern Solution

<span style="white-space: pre-wrap;">Within the last 12 months the whole landscape has shifted. </span>[uv](https://docs.astral.sh/uv/)<span style="white-space: pre-wrap;"> is now the reigning champion when it comes to all things Python packaging related.</span>