sys.getdlopenflags() și sys.setdlopenflags() în Python

Interpretorul (sys) Python 3.0+ (Unix)

Opțiunile folosite la încărcarea extensiilor scrise în C (biblioteci partajate).

Sintaxă
sys.getdlopenflags()
sys.setdlopenflags(flaguri)

Ce face sys.getdlopenflags() și sys.setdlopenflags()

Modulele de extensie (fișiere .so) se încarcă prin apelul de sistem dlopen(). Aceste funcții citesc și setează flag-urile lui: os.RTLD_NOW, os.RTLD_LAZY, os.RTLD_GLOBAL (simbolurile devin vizibile pentru alte biblioteci) etc. Sunt necesare rar, de obicei pentru biblioteci științifice care împart simboluri între extensii.

Parametri

Parametru Descriere
flaguri Combinație de constante os.RTLD_*.

Ce returnează

getdlopenflags: întreg.

Exemple

Exemplul 1: Flag-urile curente

import sys, os
vechi = sys.getdlopenflags()
print(vechi == os.RTLD_NOW)
sys.setdlopenflags(os.RTLD_NOW | os.RTLD_GLOBAL)
print(sys.getdlopenflags() == os.RTLD_NOW | os.RTLD_GLOBAL)
sys.setdlopenflags(vechi)

Rezultat

True
True

Greșeli frecvente

  • Setezi flag-urile după ce extensia a fost deja importată; nu au efect asupra modulelor încărcate.

Comenzi înrudite

  • sys.modules: Dicționarul tuturor modulelor deja încărcate, folosit ca memorie a importurilor.
  • import / from ... import: Încarcă un modul (din biblioteca standard, instalat sau scris de tine) ca să îi folosești funcțiile.