sys — fonctions propres au système¶
Ce module donne accès à des variables et fonctions propres à l’interpréteur, notamment les arguments de la ligne de commande, le chemin de recherche des modules, les flux standard et des informations sur l’implémentation en cours d’exécution.
Fonctions¶
- sys.exit(retval: object = 0, /) NoReturn¶
Termine le programme en cours avec le code de sortie indiqué. En interne, cette fonction lève une exception
SystemExit. Si un argument est fourni, sa valeur est passée comme argument àSystemExit.Sur l’OpenMV Cam, une exception
SystemExitnon gérée provoque actuellement un Réinitialisation logicielle (soft reset) de MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
Enregistre func pour qu’elle soit appelée à la fin du programme. func doit être un objet appelable ne prenant aucun argument, ou
Nonepour désactiver l’appel. La fonctionatexitrenvoie la valeur précédemment définie par cette fonction, qui vaut initialementNone.Différence avec CPython
Cette fonction est une extension de MicroPython destinée à fournir une fonctionnalité semblable au module
atexitde CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
Affiche une exception accompagnée de sa trace d’appels dans un objet de type fichier file (ou
sys.stdoutpar défaut).Différence avec CPython
Il s’agit d’une version simplifiée d’une fonction présente dans le module
tracebackde CPython. Contrairement àtraceback.print_exception(), cette fonction prend uniquement la valeur de l’exception au lieu du type de l’exception, de sa valeur et de l’objet de trace d’appels ; l’argument file doit être positionnel ; les arguments supplémentaires ne sont pas pris en charge. Un moduletracebackcompatible avec CPython se trouve dansmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
Active le traçage de l’exécution du bytecode. Pour plus de détails, voir la documentation CPython.
Cette fonction n’est pas disponible sur l’OpenMV Cam. Elle est désactivée par défaut car elle ralentit l’exécution du code ; son activation nécessite la compilation d’un micrologiciel personnalisé.
Constantes¶
- sys.argv: list[str]¶
Une liste modifiable des arguments avec lesquels le programme en cours a été démarré.
- sys.implementation: object¶
Objet contenant des informations sur l’implémentation Python actuelle. Pour MicroPython, il possède les attributs suivants :
name - la chaîne « micropython »
version - tuple (major, minor, micro, releaselevel), par exemple (1, 22, 0, “”)
_machine - une chaîne décrivant la machine sous-jacente
_mpy - la version du format de fichier mpy prise en charge (attribut facultatif)
_build - une chaîne pouvant aider à identifier la configuration avec laquelle MicroPython a été compilé
_thread - attribut de type chaîne facultatif, présent si la cible prend en charge le multithreading et valant soit « GIL », soit « unsafe »
Cet objet est le moyen recommandé pour distinguer MicroPython des autres implémentations Python (notez qu’il peut tout de même ne pas exister dans les portages les plus minimaux).
À partir de la version 1.22.0-preview, le quatrième élément releaselevel de implementation.version est soit une chaîne vide, soit
"preview".L’entrée _build a été ajoutée dans la version 1.25.0 et constitue un ensemble d’éléments séparés par des tirets. De nouveaux éléments pourront être ajoutés à l’avenir, il est donc préférable d’accéder à ce champ via
sys.implementation._build.split("-"). Les éléments actuellement utilisés sont :Sur l’OpenMV Cam, le premier élément est le nom de la carte et le second (s’il est présent) la variante de la carte.
L’entrée _thread a été ajoutée dans la version 1.26.0 et, si elle existe, la cible dispose du module
_thread. Si la cible active le GIL (verrou global de l’interpréteur), cet attribut vaut"GIL". Sinon, l’attribut vaut"unsafe"et la cible prend en charge le multithreading sans activer le GIL ; les objets Python modifiables (tels quebytearray,listetdict) partagés entre plusieurs threads doivent alors être protégés explicitement par des verrous tels que_thread.allocate_lock.Différence avec CPython
CPython impose davantage d’attributs pour cet objet, mais le strict minimum réellement utile est implémenté dans MicroPython.
- sys.maxsize: int¶
La valeur maximale qu’un type entier natif peut contenir sur la plateforme actuelle, ou la valeur maximale représentable par le type entier de MicroPython si elle est plus petite que la valeur maximale de la plateforme (c’est le cas des portages de MicroPython sans prise en charge des entiers longs).
Cet attribut est utile pour détecter la « capacité en bits » d’une plateforme (32 bits contre 64 bits, etc.). Il est recommandé de ne pas comparer directement cet attribut à une valeur donnée, mais plutôt de compter le nombre de bits qu’il contient
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: dict¶
Dictionnaire des modules chargés. Sur l’OpenMV Cam, il n’inclut pas les modules intégrés.
- sys.path: list[str]¶
Une liste modifiable de répertoires dans lesquels rechercher les modules importés.
Différence avec CPython
Sur MicroPython, une entrée ayant la valeur
".frozen"indique que l’importation doit rechercher les modules figés à ce point de la recherche. Si aucun module figé n’est trouvé, la recherche ne cherchera pas un répertoire nommé.frozen; elle poursuivra plutôt avec l’entrée suivante desys.path.
- sys.platform: str¶
La plateforme sur laquelle MicroPython s’exécute. Il s’agit d’une chaîne définie par le portage ou la carte – par exemple
"mimxrt"sur l’OpenMV RT1060 et"alif"sur l’OpenMV AE3 (certaines anciennes OpenMV Cam renvoient une chaîne spécifique au modèle, telle que"OpenMV4-H7"). Pour vérifier si votre programme s’exécute sur MicroPython (par opposition à une autre implémentation Python), utilisez plutôtsys.implementation.
- sys.ps1: str¶
Attribut modifiable contenant la chaîne utilisée pour l’invite principale du REPL. La valeur par défaut donne l’invite Python standard
>>>. Voir aussisys.ps2pour l’invite de continuation.
- sys.ps2: str¶
Attribut modifiable contenant la chaîne utilisée pour l’invite de continuation du REPL. La valeur par défaut donne l’invite Python standard
.... Voir aussisys.ps1pour l’invite principale.
- sys.tracebacklimit: int¶
Attribut modifiable contenant une valeur entière correspondant au nombre maximal d’entrées de trace d’appels à conserver dans une exception. Mettez-le à 0 pour désactiver l’ajout des traces d’appels. La valeur par défaut est 1000.
Remarque : cet attribut n’est pas disponible sur l’OpenMV Cam.
- sys.version: str¶
La version du langage Python à laquelle cette implémentation se conforme, sous forme de chaîne.
- sys.version_info: tuple¶
La version du langage Python à laquelle cette implémentation se conforme, sous forme de tuple d’entiers.
Différence avec CPython
Seuls les trois premiers numéros de version (major, minor, micro) sont pris en charge et ils ne peuvent être référencés que par index, et non par nom.