Pyodide Python compatibility#

Python Standard library#

Most of the Python standard library is functional, except for the modules listed in the sections below. A large part of the CPython test suite passes except for tests skipped in src/tests/python_tests.yaml or via patches.

Optional modules#

The following stdlib modules are unvendored by default, in order to reduce initial download size of Python distribution. You can load all unvendored stdlib modules when initializing Pyodide with, loadPyodide({ fullStdLib : true }). However this has a significant impact on the download size. Instead, it is better to load individual modules as needed using pyodide.loadPackage or micropip.install.

  • distutils

  • ssl

  • lzma

  • sqlite3

  • _hashlib

  • test: it is an exception to the above, since it is not loaded even if fullStdLib is set to true.

Removed modules#

The following modules are removed from the standard library to reduce download size and since they currently wouldn’t work in the WebAssembly VM,

  • curses

  • dbm

  • ensurepip

  • idlelib

  • lib2to3

  • tkinter

  • turtle.py

  • turtledemo

  • venv

  • pwd

Included but not working modules#

The following modules can be imported, but are not functional due to the limitations of the WebAssembly VM:

  • multiprocessing

  • threading

  • sockets

as well as any functionality that requires these.