Porting Extension Modules to Python 3

We recommend the following resources for porting extension modules to Python 3:

  • The Migrating C extensions chapter from Supporting Python 3: An in-depth guide, a book on moving from Python 2 to Python 3 in general, guides the reader through porting an extension module.

  • The Porting guide from the py3c project provides opinionated suggestions with supporting code.

  • The Cython and CFFI libraries offer abstractions over Python’s C API. Extensions generally need to be re-written to use one of them, but the library then handles differences between various Python versions and implementations.