$30 off During Our Annual Pro Sale. View Details »

Time travel: Let’s learn from the history of Py...

Avatar for note35 note35
October 07, 2025

Time travel: Let’s learn from the history of Python packaging!

Ever wonder about the history of Python packaging? Learn the origins of tools like pip and poetry, and discover how big tech handled packaging before adopting these solutions.

Avatar for note35

note35

October 07, 2025
Tweet

More Decks by note35

Other Decks in Technology

Transcript

  1. Kir Chou @ PyCon TW 2020 1 Time travel: Let’s

    learn from the history of Python packaging!
  2. Kir Chou • PyCon TW Speaker 2017, 2018, 2019 •

    PyCon JP Speaker 2019, 2020 • SDE @ Amazon Search 2 @k1rch0u kir.chou note35
  3. Agenda • Motivation • History of Python software distribution •

    Learn from history • Challenge before community’s python packaging solution • Challenge after community’s python packaging solution • Takeaway • Appendix 3
  4. 13

  5. RFC822 14 1991 2005 2003 Python 1.0 Python 2.0 2000

    PEP241 PEP345 PEP314 disutils (egg) setuptools 2006 easy_install PEP405 tox virtualenv 20072008 2011 PyPI
  6. 19

  7. 20 1991 2011 Python 1.0 2008 Python 3.0 RFC822 PEP566

    PEP459 PEP426 PEP427,440 PEP376 2005 2003 Python 2.0 2000 PEP241 PEP345 PEP314 disutils (egg) setuptools 2006 wheel easy_install bento/twine PyPI pip PEP405 tox virtualenv 2007 PEP394 PEP582 poetry pipenv 2012 2017 PyPI warehouse PEP262
  8. 24 Package installer (2008): pip Publish Tool (2013): bento /

    twine / flit PyPI (2018): PyPI warehouse
  9. 27

  10. 33 2. Build Tools 1. Metadata Schema 3. Publish Tools

    / Package Index Evolution 4. Installer / Deployment Tools
  11. 34 2. Build Tools 1. Metadata Schema 3. Publish Tools

    / Package Index 5. Multiple platform Evolution 4. Installer / Deployment Tools
  12. 35 2. Build Tools 1. Metadata Schema 3. Publish Tools

    / Package Index 5. Multiple platform / version Evolution 4. Installer / Deployment Tools
  13. 36 1991 Python 1.0 wheel pipenv poetry The pattern is

    repeated per generation 2008 Python 3.0 tox Python 2.0 2000 disutils (egg) setuptools virtualenv bento/twine easy_install pip PyPI warehouse PyPI
  14. Solve same problems in history • Build tool • build

    tool + dependency resolver • Support multiple Python version • Publish tool / Private Package Registry • Installer / Deployment tool • Support isolated environment • Support multiple platforms 40
  15. 41 2. Internal Build Tools 1. Internal Package Metadata 3.

    Internal Package Registry 4. Internal Deployment Tools
  16. 43

  17. Packaging problem is mostly general! • Build System • What

    is a Python package? • How does build tool resolve Python’s dependencies? • How to build a Python package? • Publish System / Private Package Registry • How to publish your Python package? • How to download other Python’s dependencies? • Deployment System • How to isolate your Python environment? • Which platform does the Python package support? 45
  18. 49

  19. 50 Cloud Services Business Cloud Service Provider Developer Community Sponsorship

    Pay $ Invent New solution Adopt new community solution One for all, all for one
  20. 52

  21. 53

  22. 55 Review the past to understand the present Takeaway History

    & Past Challenges Current Challenges Community
  23. History • Dustin Ingram @ SciPy 2018 Inside the Cheeseshop:

    How Python Packaging Works • History of packaging written by Martijn Faassen • Kenneth Reitz @ PyCon 2018 Pipenv: The Future of Python Dependency Management • Clinton Roy @ Kiwi PyCon X (2019) The Packaging Lifecycle with Poetry • History of wheel written by Daniel Holth 58
  24. Packaging • Dave Forgac @ PyOhio 2015 Python Packaging from

    Init to Deploy • Elana Hashman @ PyCon 2019 The Black Magic of Python Wheel • Official Document: Packaging binary extensions (2013) 59
  25. Runtime (Virtual) Environment • Carl Meyer @ PyCon 2011 Reverse-engineering

    Ian Bicking's brain: inside pip and virtualenv • Bernat Gabor @ EuroPython 2019 Status quo of virtual environments 60
  26. 61 Why did 3 big cloud platforms provide Package Registry

    service JUST recently? 2019 May 2020 June 2020 July