sys.modules în Python

Interpretorul (sys) Python 3.0+

Dicționarul tuturor modulelor deja încărcate, folosit ca memorie a importurilor.

Sintaxă
sys.modules  # dicționarul modulelor încărcate

Ce face sys.modules

sys.modules asociază numele fiecărui modul încărcat cu obiectul modulului. La import, Python verifică întâi aici: dacă modulul există, îl refolosește fără să ruleze din nou codul lui. De aceea un modul este încărcat o singură dată per program.

Ștergerea unei chei forțează reîncărcarea la următorul import (pentru asta există și importlib.reload()). Testele folosesc uneori sys.modules pentru a înlocui un modul cu o versiune falsă.

Exemple

Exemplul 1: Module încărcate

import sys
print("json" in sys.modules)
import json
print("json" in sys.modules, sys.modules["json"] is json)
print(type(sys.modules).__name__, len(sys.modules) > 10)

Rezultat

False
True True
dict True

Greșeli frecvente

  • Modifici fișierul unui modul în timpul rulării și apelezi din nou import; codul nu se reîncarcă. Folosește importlib.reload(modul).

Comenzi înrudite

  • import / from ... import: Încarcă un modul (din biblioteca standard, instalat sau scris de tine) ca să îi folosești funcțiile.
  • sys.path: Lista directoarelor în care Python caută modulele la import.