PyCon JP 2024

Your locale preferences have been saved. We like to think that we have excellent support for English in pretalx, but if you encounter issues or errors, please contact us!

The Wheelhouse of Horrors
2024-09-28 , 4F Track4

You might be surprised to learn that, besides naming and cache invalidation problems, building a binary wheel for a Python extension is one of the hardest problems in computer science. Or more precisely, building that binary wheel correctly. Lucky for us, a few amazing community-led projects hide all that complexity from us, so we can instead focus on shipping and using Python code.

This talk will showcase some notable examples of how things can go wrong, while also helping users and maintainers recognise these typical error scenarios. We will learn how to avoid these issues and what users can do when they encounter such issues when using a library.


Why did you choose this topic?

One of CPython's superpowers is its C API which allows us to leverage libraries written in other languages, directly from Python. Many popular Python packages rely on this feature and this is one of the things what makes Python such a great language for many areas, like data science and AI.

However, this functionality hides a surprising amount of complexity behind the covers and this means that when things go wrong, it can be very challenging to resolve or even understand what went wrong, which is why I believe it is so common to see questions around package installation problems in Python communities.

I have been working in this space for many years and I feel that equipping users and library maintainers with useful tips and knowledge around Python native extensions can make a big difference in making it easier to troubleshoot and avoid such issues.

Knowledges and know-how the audience can get from your talk
  • What are Python binary wheels and why are they useful. The audience should be able to glance at the file name of a Python platform wheel and know what platform, Python version, etc. it will be compatible with.
  • Learn about the manylinux specification and its role in ensuring widely-compatible wheels.
  • Practical examples of typical issues when installing platforms wheels and tips on identifying and resolving such issues.
  • Tools for Python maintainers which take all the guesswork out of building and tagging wheels correctly.
Prior knowledges speakers assume the audience to have

Basic knowledge of the Python programming language and the Linux operating system. Some experience using package managers like pip. Familiarity with linking and compiling C/C++ applications can be helpful, but isn't necessarily to follow along.

Audience experiment

Intermediate

Language of presentation

English

Language of presentation material

English

Laszlo leads the Python Infrastructure team at Bloomberg in London. He has been working on solving difficult Python packaging problems since 2018 and is a maintainer and contributor of several Python packaging tools, like auditwheel and manylinux.