Introduction to packages
Python has a very messy history when it comes to packaging. Over the decades that Python has existed, we have (had) libraries such as distutils
, distutils2
, distribute
, buildout
, setuptools
, packaging
, distlib
, poetry
, and several others. All of these projects were started with the best intentions to improve upon the status quo, unfortunately with varying degrees of success. And that is not to mention all the different package types such as wheels, source packages, and binary packages such as eggs, Red Hat .rpm
files, and Windows .exe
/.msi
files.
The good news is that even though packaging has had a complicated history, things have started to settle over the last few years and the situation has improved greatly. Building packages has become much easier, and maintaining a stable project dependency state is now easily possible.
Types of packages
Python has (had) a whole bunch of package types, but there are only two that really matter these days...