PyPI is an incredibly important piece of infrastructure for the Python community, and if you use Python you probably use PyPI, directly or indirectly, on a daily basis, and many different sites, services, and companies rely heavily on it. Code reuse is a very common need. It saves you time for writing the same code multiple times, it helps organize code in a modular way and enables leveraging other smart people's work to make new things happen. When it comes to python, unfortunately the term "package" is an overloaded term, as it means both a noun for a namespace that you put modules into as well as the verb of bundling up some code for easy distribution. Historically, Python packaging has been a source of significant pain for even the most devoted Python enthusiasts. In this talk I'll be covering all the required instructions and a quick overview of the current state of Python packaging tools. I'll mostly focus on setuptools, pip and wheels, putting an emphasis on their superiority over their precursors. I'll also list down the honorable mentions of tools worth knowing. Then I'll share examples of how you can use the features of the Setuptools library, we'll go from nothing to a package that you can proudly put it in your portfolio to be used by other people. And yeah! Without pain!