sys
– system specific functions
This module implements a subset of the corresponding CPython module,
as described below. For more information, refer to the original
CPython documentation: sys
.
Functions
- sys.exit(retval=0, /)
Terminate current program with a given exit code. Underlyingly, this function raise as
SystemExit
exception. If an argument is given, its value given as an argument toSystemExit
.
- sys.print_exception(exc, file=sys.stdout, /)
This function is deprecated and will be removed starting in CircuitPython 10.x,
traceback.print_exception()
should be used instead.Print exception with a traceback to a file-like object file (or
sys.stdout
by default).Difference to CPython
This is simplified version of a function which appears in the
traceback
module in CPython. Unliketraceback.print_exception()
, this function takes just exception value instead of exception type, exception value, and traceback object; file argument should be positional; further arguments are not supported.
Constants
- sys.argv
A mutable list of arguments the current program was started with.
- sys.byteorder
The byte order of the system (
"little"
or"big"
).
- sys.implementation
Object with information about the current Python implementation. For CircuitPython, it has following attributes:
name - string “circuitpython”
version - tuple (major, minor, micro), e.g. (1, 7, 0)
_machine - string describing the underlying machine
_mpy - supported mpy file-format version (optional attribute)
This object is the recommended way to distinguish CircuitPython from other Python implementations (note that it still may not exist in the very minimal ports).
Difference to CPython
CPython mandates more attributes for this object, but the actual useful bare minimum is implemented in CircuitPython.
- sys.maxsize
Maximum value which a native integer type can hold on the current platform, or maximum value representable by the CircuitPython integer type, if it’s smaller than platform max value (that is the case for CircuitPython ports without long int support).
This attribute is useful for detecting “bitness” of a platform (32-bit vs 64-bit, etc.). It’s recommended to not compare this attribute to some value directly, but instead count number of bits in it:
bits = 0 v = sys.maxsize while v: bits += 1 v >>= 1 if bits > 32: # 64-bit (or more) platform ... else: # 32-bit (or less) platform # Note that on 32-bit platform, value of bits may be less than 32 # (e.g. 31) due to peculiarities described above, so use "> 16", # "> 32", "> 64" style of comparisons.
- sys.modules
Dictionary of loaded modules. On some ports, it may not include builtin modules.
- sys.path
A mutable list of directories to search for imported modules.
Difference to CPython
On MicroPython, an entry with the value
".frozen"
will indicate that import should search frozen modules at that point in the search. If no frozen module is found then search will not look for a directory called.frozen
, instead it will continue with the next entry insys.path
.
- sys.platform
The platform that CircuitPython is running on. For OS/RTOS ports, this is usually an identifier of the OS, e.g.
"linux"
. For baremetal ports it is an identifier of the chip on a board, e.g."MicroChip SAMD51"
. It thus can be used to distinguish one board from another. If you need to check whether your program runs on CircuitPython (vs other Python implementation), usesys.implementation
instead.
- sys.stderr
Standard error
stream
.
- sys.stdin
Standard input
stream
.
- sys.stdout
Standard output
stream
.
- sys.version
Python language version that this implementation conforms to, as a string.
- sys.version_info
Python language version that this implementation conforms to, as a tuple of ints.
Difference to CPython
Only the first three version numbers (major, minor, micro) are supported and they can be referenced only by index, not by name.