|Project Name||Stars||Downloads||Repos Using This||Packages Using This||Most Recent Commit||Total Releases||Latest Release||Open Issues||License||Language|
|Micropython||17,273||5||4 hours ago||11||October 05, 2022||1,663||other||C|
|MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems|
|Micropython Lib||2,081||2||2||6 hours ago||9||June 27, 2017||246||other||Python|
|Core Python libraries ported to MicroPython|
|Lsofgraph||942||4 years ago||bsd-2-clause||Lua|
|lsof to graphviz|
|Micropython Esp32||546||5 years ago||13||mit||C|
|Old port of MicroPython to the ESP32 -- new port is at https://github.com/micropython/micropython|
|Picocom||429||2 years ago||1||February 27, 2018||32||gpl-2.0||C|
|Minimal dumb-terminal emulation program|
|Netcat||364||10 years ago||7||gpl-2.0||C|
|NetCat for Windows|
|Redir||274||a year ago||5||gpl-2.0||C|
|A TCP port redirector for UNIX|
|Shflags||265||a month ago||17||apache-2.0||Shell|
|shFlags is a port of the Google gflags library for Unix shell.|
|Nfsen Ng||176||7 months ago||26||apache-2.0||PHP|
|Responsive NetFlow visualizer built on top of nfdump tools.|
|Dennix||153||a month ago||8||isc||C|
|Dennix is a unix-like hobbyist operating system written from scratch.|
This is a repository of packages designed to be useful for writing MicroPython applications.
The packages here fall into categories corresponding to the four top-level directories:
python-stdlib: Compatible versions of modules from The Python Standard Library. These should be drop-in replacements for the corresponding Python modules, although many have reduced functionality or missing methods or classes (which may not be an issue for most cases).
python-ecosys: Compatible, but reduced-functionality versions of packages from the wider Python ecosystem. For example, a package that might be found in the Python Package Index.
micropython: MicroPython-specific packages that do not have equivalents in other Python environments. This includes drivers for hardware (e.g. sensors, peripherals, or displays), libraries to work with embedded functionality (e.g. bluetooth), or MicroPython-specific packages that do not have equivalents in CPython.
unix-ffi: These packages are specifically for the MicroPython Unix port and provide access to operating-system and third-party libraries via FFI, or functionality that is not useful for non-Unix ports.
To install a micropython-lib package, there are four main options. For more information see the Package management documentation documentation.
As of MicroPython v1.20 (and nightly builds since October 2022), boards
with WiFi and Ethernet support include the
mip package manager.
>>> import mip >>> mip.install("package-name")
mpremotefrom your PC
mpremote is the officially-supported tool for interacting with a MicroPython
device and, since v0.4.0, support for installing micropython-lib packages is
provided by using the
$ mpremote connect /dev/ttyUSB0 mip install package-name
See the mpremote documentation.
If you are building your own firmware, all packages in this repository include
manifest.py that can be included into your board manifest via the
require() command. See Manifest files for
Many micropython-lib packages are just single-file modules, and you can
quickly get started by copying the relevant Python file to your device. For
example, to add the
base64 library, you can directly copy
python-stdlib/base64/base64.py to the
lib directory on your device.
This can be done using
mpremote, for example:
$ mpremote connect /dev/ttyUSB0 cp python-stdlib/base64/base64.py :/lib
For packages that are implemented as a package directory, you'll need to copy
the directory instead. For example, to add
collections-defaultdict/collections/defaultdict.py to a directory named
lib/collections on your device.
Note that unlike the other three approaches based on
you will need to manually resolve dependencies. You can inspect the relevant
manifest.py file to view the list of dependencies for a given package.
It is possible to use the
mpremote mip install or
mip.install() methods to
install packages built from a
of micropython-lib, if the fork's owner has opted in.
This can be useful to install packages from a pending Pull Request, for example.
First, the owner of the fork must opt-in as described under Publishing packages from forks.
After this has happened, each time someone pushes to a branch in that fork then GitHub Actions will automatically publish the packages to a GitHub Pages site.
To install these packages, use commands such as:
$ mpremote connect /dev/ttyUSB0 mip install --index https://USERNAME.github.io/micropython-lib/mip/BRANCH_NAME PACKAGE_NAME
Or from a networked device:
import mip mip.install(PACKAGE_NAME, index="https://USERNAME.github.io/micropython-lib/mip/BRANCH_NAME")
PACKAGE_NAME are replaced with the owner
of the fork, the branch the packages were built from, and the package name.)
The MicroPython Wiki is also used for micropython-lib.
For bugs and feature requests, please raise an issue.
We welcome pull requests to add new packages, fix bugs, or add features. Please be sure to follow the Contributor's Guidelines & Code Conventions. Note that MicroPython is licensed under the MIT license and all contributions should follow this license.
The terms library, package, and module are overloaded and lead to some confusion. The interpretation used in by the MicroPython project is that:
A library is a collection of installable packages, e.g. The Python Standard Library, or micropython-lib.
A package can refer to two things. The first meaning, "library package", is
something that can be installed from a library, e.g. via
CPython/PyPI). Packages provide modules that can be imported. The ambiguity
here is that the module provided by the package does not necessarily have to
have the same name, e.g. the
pyjwt package provides the
jwt module. In
pyserial package providing the
serial module is another
A module is something that can be imported. For example, "the os module".
A module can be implemented either as a single file, typically also called
a module or "single-file module", or as a package (the second meaning),
which in this context means a directory containing multiple
(usually at least an
In micropython-lib, we also have the concept of an extension package which
is a library package that extends the functionality of another package, by
adding additional files to the same package directory. These packages have
hyphenated names. For example, the
collections-defaultdict package extends
collections package to add the
defaultdict class to the