Python
Python interpreter
This guide explains how to run Python on NuttX.
Yes, you heard it right. Python on NuttX. This is a port of the CPython repository for NuttX. The CPython repository is the reference implementation of the Python programming language. It is written in C and is the most widely used Python interpreter.
Warning
Python for NuttX is still in the experimental stage (thus, it requires CONFIG_EXPERIMENTAL
to be enabled)
It is not fully functional for all the architectures and configurations.
Please check this issue in the nuttx-apps repository to know the current status.
How Does it Work?
Python for NuttX target initially the
rv-virt
(RISC-V QEMU) board.Python modules are stored in pyc (byte-code format) and are loaded from a ROMFS image at startup.
Environment variables like
PYTHONHOME
andPYTHON_BASIC_REPL
need to be set accordingly.
Building Python NuttX
Use the rv-virt:python
config to build Python for NuttX. Note that the CMake scripts don’t work for this configuration. For now, please use the makefile build instead:
$ cd nuttx
$ make distclean
$ ./tools/configure.sh rv-virt:python
$ make -j$(nproc)
$ ls -l nuttx
This will generate a nutxx
binary. This file can be run using the RISC-V QEMU.
Try Python in NSH
$ .qemu-system-riscv32 -semihosting -M virt,aclint=on -cpu rv32 -smp 1 -bios none -kernel nuttx -nographic
ABC
NuttShell (NSH) NuttX-10.4.0
nsh> mount_modules
Mounting ROMFS filesystem at target=/usr/local/lib/ with source=/dev/ram1
nsh> export PYTHONHOME /usr/local
nsh> export PYTHON_BASIC_REPL 1
nsh> python
Python 3.13.0 (main, Dec 4 2024, 17:00:42) [GCC 13.2.0] on nuttx
Type "help", "copyright", "credits" or "license" for more information.
>>>
Demo
Check the following asciinema demo to see how to run Python on NuttX. You can copy and paste the commands from the demo to try it yourself.