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.
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, PDM and Poetry. For pure Python projects (that didn’t require specialised C libraries or Nvidia toolkits) Poetry remained the best tool until very recently.
uv: The Modern Solution
Within the last 12 months the whole landscape has shifted. uv is now the reigning champion when it comes to all things Python packaging related.
UV is written in rust and provides both package management and environment management capability.