Mahmoud Hashemi

Mahmoud Hashemi is a backend engineer and architect, open-source library maintainer, and Wikipedian. Newly building services and teams at shopkick, for many years, he built scalable enterprise Python services at PayPal, where he wrote technical essays and presented O'Reilly's Enterprise Software with Python. On the Wikipedia side of things, he's known for Listen to Wikipedia, Wikipedia Social Search, the Weeklypedia newsletter, the Wikipedia IFTTT channel, and much much more. He believes education is more than something you receive, and that every coder should be able to see one, do one, then teach one.

Speaker home page

The Packaging Gradient

Scalable python, Intermediate
8/12/2017 | 3:15 PM-4:15 PM | Fisher West


Shipping any software can be hard if you don't know what you're getting into. An ergonomic, general-purpose language like Python can get you into complex packaging waters without you noticing. This talk presents a straightforward, example-driven guide to choosing among virtually every method in common use for packaging Python, scaling from wheels to PEX to Docker and more.


Deployment is not the last step of development. Experienced engineers know to work backwards from deployment requirements, planning and designing for the reality of production environments.

Python packaging sometimes gets a bad reputation, but a lot of this comes from less experienced engineers learning the hard way that implementation language does not dictate their packaging solutions.

Packaging is all about target environment and deployment experience. Python was designed to be cross-platform and runs in countless environments. Python's built-in tools can't carry you anywhere you want to go. These days, I can write a mobile app in Python, but obviously people don't use pip to install it. More advanced codebases have to scale their packaging accordingly.

This talk moves example by example, presenting shippable code, and the simplest packaging solution appropriate for it. All the examples are in Python, but the lessons are absolutely language agnostic. Learn the packaging gradient and put those deployment doubts to rest once and for all.