MicroPython libraries


Important summary of this section

  • MicroPython implements a subset of Python functionality for each module.

  • To ease extensibility, MicroPython versions of standard Python modules usually have u (“micro”) prefix.

  • Any particular MicroPython variant or port may miss any feature/function described in this general documentation (due to resource constraints or other limitations).

This chapter describes modules (function and class libraries) which are built into MicroPython. There are a few categories of such modules:

  • Modules which implement a subset of standard Python functionality and are not intended to be extended by the user.

  • Modules which implement a subset of Python functionality, with a provision for extension by the user (via Python code).

  • Modules which implement MicroPython extensions to the Python standard libraries.

  • Modules specific to a particular MicroPython port and thus not portable.

Python standard libraries and micro-libraries

The following standard Python libraries have been “micro-ified” to fit in with the philosophy of MicroPython. They provide the core functionality of that module and are intended to be a drop-in replacement for the standard Python library. Some modules below use a standard Python name, but prefixed with “u”, e.g. ujson instead of json. This is to signify that such a module is micro-library, i.e. implements only a subset of CPython module functionality. By naming them differently, a user has a choice to write a Python-level module to extend functionality for better compatibility with CPython (indeed, this is what done by the micropython-lib project mentioned above).

On some embedded platforms, where it may be cumbersome to add Python-level wrapper modules to achieve naming compatibility with CPython, micro-modules are available both by their u-name, and also by their non-u-name. The non-u-name can be overridden by a file of that name in your library path (sys.path). For example, import json will first search for a file json.py (or package directory json) and load that module if it is found. If nothing is found, it will fallback to loading the built-in ujson module.