Skip to content

Supported C API Extensions

Sam Gross edited this page Mar 11, 2023 · 13 revisions

The table below lists C API extensions with pre-built pip wheels that are compatible with "nogil" Python. Linux and Windows wheels are for x86-64. MacOS wheels support both x86-64 (Intel) and ARM.

Note that even the "supported" extensions are not well tested. Please file GitHub issue if you run into any problems.

Extension Linux macOS Windows
bitarray
blis
cffi
cryptography
cymem
cython
h5py
jax
kiwisolver
llvmlite
lxml
markupsafe
matplotlib
numexpr
numpy
opencv-python
orjson
pglast
pillow
psycopg2-binary
pybind11
pydantic
pytorch
scikit-learn
scipy
spacy
thinc
torchvision

Unsupported extensions

  • Aspose.Email-for-Python-via-NET (closed source, incompatible native binaries)
  • Numba (incompatible byte code changes)

Notes

Wheels are primarily built using the GitHub actions workflows at https://github.com/colesbury/nogil-wheels.

Jax

Seems to work, but I'm not sure about using Jax from multiple threads. Need someone with Jax expertise.

Numba

The interpreter.py file needs to be updated for the nogil interpreter's bytecode.

PyArrow

I haven't figured out how to build it from source yet.

PyTorch

Believed to work well.