Cristian Medina recently provide an update on the state of application packaging and distribution in 2019.
Application distribution goes well beyond simple distribution of a module or library via PyPi, Anaconda Cloud, or other such channels. Application distribution must consider cross-platform differences, lack of availability of Python itself on the destination computer, uncertainty of ability to download and import needed libraries from the internet, and non-Python interoperability concerns (e.g., importing C code as well as Python). Additionally, there are matters of convenience and experience to consider, as some end-users really want an executable file and icon on their desktop that they can double-click to launch your application.
Technologies that he discusses include the following: