Importera moduler

PyObject *PyImport_ImportModule(const char *name)
Returnera värde: Ny referens. En del av Stabil ABI.

Detta är ett omslag runt PyImport_Import() som tar en const char* som argument istället för en PyObject*.

PyObject *PyImport_ImportModuleNoBlock(const char *name)
Returnera värde: Ny referens. En del av Stabil ABI.

Denna funktion är ett föråldrat alias för PyImport_ImportModule().

Ändrad i version 3.3: Denna funktion brukade misslyckas omedelbart när importlåset hölls av en annan tråd. I Python 3.3 övergick dock låsningssystemet till per-modul-lås för de flesta ändamål, så den här funktionens speciella beteende behövs inte längre.

Deprecated since version 3.13, will be removed in version 3.15: Använd PyImport_ImportModule() istället.

PyObject *PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)
Returnera värde: Ny referens.

Importera en modul. Detta beskrivs bäst genom att hänvisa till den inbyggda Python-funktionen __import__().

Returvärdet är en ny referens till den importerade modulen eller paketet på högsta nivån, eller NULL med en undantagsuppsättning vid misslyckande. Precis som för __import__() är returvärdet när en undermodul av ett paket begärdes normalt paketet på högsta nivån, såvida inte en icke-tom fromlist gavs.

Felaktig import tar bort ofullständiga modulobjekt, som med PyImport_ImportModule().

PyObject *PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)
Returnera värde: Ny referens. En del av Stabil ABI sedan version 3.7.

Importera en modul. Detta beskrivs bäst genom att hänvisa till den inbyggda Python-funktionen __import__(), eftersom standardfunktionen __import__() anropar denna funktion direkt.

Returvärdet är en ny referens till den importerade modulen eller paketet på högsta nivån, eller NULL med en undantagsuppsättning vid misslyckande. Precis som för __import__() är returvärdet när en undermodul av ett paket begärdes normalt paketet på högsta nivån, såvida inte en icke-tom fromlist gavs.

Tillagd i version 3.3.

PyObject *PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)
Returnera värde: Ny referens. En del av Stabil ABI.

Liknar PyImport_ImportModuleLevelObject(), men namnet är en UTF-8-kodad sträng i stället för ett Unicode-objekt.

Ändrad i version 3.3: Negativa värden för level accepteras inte längre.

PyObject *PyImport_Import(PyObject *name)
Returnera värde: Ny referens. En del av Stabil ABI.

Detta är ett gränssnitt på högre nivå som anropar den aktuella ”importkrokfunktionen” (med en explicit nivå på 0, vilket innebär absolut import). Den anropar __import__()-funktionen från __builtins__ i de aktuella globalerna. Detta innebär att importen görs med hjälp av de import-hooks som finns installerade i den aktuella miljön.

Denna funktion använder alltid absolut import.

PyObject *PyImport_ReloadModule(PyObject *m)
Returnera värde: Ny referens. En del av Stabil ABI.

Ladda om en modul. Returnerar en ny referens till den omladdade modulen, eller NULL med ett undantag om den misslyckas (modulen finns fortfarande i det här fallet).

PyObject *PyImport_AddModuleRef(const char *name)
Returnera värde: Ny referens. En del av Stabil ABI sedan version 3.13.

Returnerar det modulobjekt som motsvarar ett modulnamn.

Argumentet namn kan vara av formen package.module. Kontrollera först i modulordlistan om det finns någon där, och om inte, skapa en ny och infoga den i modulordlistan.

Returnerar en strong reference till modulen vid framgång. Returnerar NULL med en undantagsuppsättning vid misslyckande.

Modulnamnet name avkodas från UTF-8.

Den här funktionen laddar eller importerar inte modulen; om modulen inte redan var laddad får du ett tomt modulobjekt. Använd PyImport_ImportModule() eller en av dess varianter för att importera en modul. Paketstrukturer som impliceras av ett prickat namn för namn skapas inte om de inte redan finns.

Tillagd i version 3.13.

PyObject *PyImport_AddModuleObject(PyObject *name)
Returnera värde: Lånad referens. En del av Stabil ABI sedan version 3.7.

Liknar PyImport_AddModuleRef(), men returnerar en lånad referens och namn är ett Python str-objekt.

Tillagd i version 3.3.

PyObject *PyImport_AddModule(const char *name)
Returnera värde: Lånad referens. En del av Stabil ABI.

Liknar PyImport_AddModuleRef(), men returnerar en lånad referens.

PyObject *PyImport_ExecCodeModule(const char *name, PyObject *co)
Returnera värde: Ny referens. En del av Stabil ABI.

Med ett modulnamn (eventuellt av formen package.module) och ett kodobjekt läst från en Python-bytecode-fil eller erhållet från den inbyggda funktionen compile(), laddar modulen. Returnerar en ny referens till modulobjektet, eller NULL med en undantagsuppsättning om ett fel inträffade. name tas bort från sys.modules i felfall, även om name redan fanns i sys.modules vid inmatningen till PyImport_ExecCodeModule(). Att lämna ofullständigt initialiserade moduler i sys.modules är farligt, eftersom import av sådana moduler inte har något sätt att veta att modulobjektet är ett okänt (och förmodligen skadat med avseende på modulförfattarens avsikter) tillstånd.

Modulens __spec__ och __loader__ sätts, om de inte redan är satta, med lämpliga värden. Specs laddare kommer att sättas till modulens __loader__ (om den är satt) och annars till en instans av SourceFileLoader.

Modulens attribut __file__ kommer att sättas till kodobjektets co_filename. Om tillämpligt kommer även __cached__ att sättas.

Denna funktion kommer att ladda om modulen om den redan importerats. Se PyImport_ReloadModule() för det avsedda sättet att ladda om en modul.

Om name pekar på ett prickat namn av formen package.module kommer alla paketstrukturer som inte redan har skapats ändå inte att skapas.

Se även PyImport_ExecCodeModuleEx() och PyImport_ExecCodeModuleWithPathnames().

Ändrad i version 3.12: Inställningen av __cached__ och __loader__ är föråldrad. Se ModuleSpec för alternativ.

PyObject *PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)
Returnera värde: Ny referens. En del av Stabil ABI.

Som PyImport_ExecCodeModule(), men attributet __file__ i modulobjektet sätts till pathname om det inte är NULL.

Se även PyImport_ExecCodeModuleWithPathnames().

PyObject *PyImport_ExecCodeModuleObject(PyObject *name, PyObject *co, PyObject *pathname, PyObject *cpathname)
Returnera värde: Ny referens. En del av Stabil ABI sedan version 3.7.

Som PyImport_ExecCodeModuleEx(), men attributet __cached__ i modulobjektet sätts till cpathname om det inte är NULL. Av de tre funktionerna är denna att föredra att använda.

Tillagd i version 3.3.

Ändrad i version 3.12: Inställningen __cached__ är föråldrad. Se ModuleSpec för alternativ.

PyObject *PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co, const char *pathname, const char *cpathname)
Returnera värde: Ny referens. En del av Stabil ABI.

Som PyImport_ExecCodeModuleObject(), men name, pathname och cpathname är UTF-8-kodade strängar. Försök görs också att räkna ut vad värdet för pathname ska vara från cpathname om det förra är satt till NULL.

Tillagd i version 3.2.

Ändrad i version 3.3: Använder imp.source_from_cache() vid beräkning av källsökvägen om endast bytecode-sökvägen anges.

Ändrad i version 3.12: Använder inte längre den borttagna modulen imp.

long PyImport_GetMagicNumber()
En del av Stabil ABI.

Returnerar det magiska numret för Python-bytekodfiler (även känd som .pyc-fil). Det magiska numret bör finnas i de första fyra byte i bytecode-filen, i little-endian byte-ordning. Returnerar -1 vid fel.

Ändrad i version 3.3: Returnerar värdet -1 vid fel.

const char *PyImport_GetMagicTag()
En del av Stabil ABI.

Returnerar den magiska taggsträngen för filnamn i Python-bytekod i formatet PEP 3147. Tänk på att värdet i sys.implementation.cache_tag är auktoritativt och bör användas i stället för denna funktion.

Tillagd i version 3.2.

PyObject *PyImport_GetModuleDict()
Returnera värde: Lånad referens. En del av Stabil ABI.

Returnerar den ordbok som används för moduladministration (även kallad sys.modules). Observera att detta är en variabel för varje tolk.

PyObject *PyImport_GetModule(PyObject *name)
Returnera värde: Ny referens. En del av Stabil ABI sedan version 3.8.

Returnerar den redan importerade modulen med det angivna namnet. Om modulen inte har importerats ännu returneras NULL men inget felmeddelande anges. Returnerar NULL och anger ett fel om uppslagningen misslyckades.

Tillagd i version 3.7.

PyObject *PyImport_GetImporter(PyObject *path)
Returnera värde: Ny referens. En del av Stabil ABI.

Returnerar ett sökobjekt för ett sys.path/pkg.__path__-objekt path, eventuellt genom att hämta det från sys.path_importer_cache dict. Om det ännu inte var cachat, traversera sys.path_hooks tills en hook hittas som kan hantera sökvägsobjektet. Returnera None om ingen hook kan; detta talar om för vår anropare att path based finder inte kunde hitta någon sökare för detta sökvägsobjekt. Cacha resultatet i sys.path_importer_cache. Returnera en ny referens till sökobjektet.

int PyImport_ImportFrozenModuleObject(PyObject *name)
En del av Stabil ABI sedan version 3.7.

Laddar en fryst modul med namnet namn. Returnerar 1 om det lyckas, 0 om modulen inte hittas och -1 med ett undantag om initialiseringen misslyckades. För att komma åt den importerade modulen vid en lyckad laddning, använd PyImport_ImportModule(). (Notera den felaktiga benämningen — denna funktion skulle ladda om modulen om den redan var importerad)

Tillagd i version 3.3.

Ändrad i version 3.4: Attributet __file__ är inte längre inställt på modulen.

int PyImport_ImportFrozenModule(const char *name)
En del av Stabil ABI.

Liknar PyImport_ImportFrozenModuleObject(), men namnet är en UTF-8-kodad sträng i stället för ett Unicode-objekt.

struct _frozen

Detta är strukturtypdefinitionen för frysta modulbeskrivare, som genereras av freeze-verktyget (se Tools/freeze/ i Python-källdistributionen). Dess definition, som finns i Include/import.h, är:

struct _frozen {
    const char *namn;
    konst osignerad char *code;
    int storlek;
    bool is_package;
};

Ändrad i version 3.11: Det nya fältet is_package anger om modulen är ett paket eller inte. Detta ersätter inställningen av fältet size till ett negativt värde.

const struct _frozen *PyImport_FrozenModules

Denna pekare initialiseras så att den pekar på en array av _frozen-poster, som avslutas med en post vars alla medlemmar är NULL eller noll. När en fryst modul importeras söks den i den här tabellen. Tredjepartskod kan använda detta för att skapa en dynamiskt skapad samling av frysta moduler.

int PyImport_AppendInittab(const char *name, PyObject *(*initfunc)(void))
En del av Stabil ABI.

Lägg till en enda modul i den befintliga tabellen över inbyggda moduler. Detta är en bekväm omslutning kring PyImport_ExtendInittab(), som returnerar -1 om tabellen inte kunde utökas. Den nya modulen kan importeras med namnet name och använder funktionen initfunc som initialiseringsfunktion vid det första importförsöket. Denna bör anropas före Py_Initialize().

struct _inittab

Struktur som beskriver en enda post i listan över inbyggda moduler. Program som bygger in Python kan använda en array av dessa strukturer tillsammans med PyImport_ExtendInittab() för att tillhandahålla ytterligare inbyggda moduler. Strukturen består av två medlemmar:

const char *name

Modulens namn, som en ASCII-kodad sträng.

PyObject *(*initfunc)(void)

Initialiseringsfunktion för en modul som är inbyggd i tolken.

int PyImport_ExtendInittab(struct _inittab *newtab)

Lägger till en samling moduler i tabellen över inbyggda moduler. Arrayen newtab måste sluta med en sentinel-post som innehåller NULL för fältet name; om sentinel-värdet inte anges kan det resultera i ett minnesfel. Returnerar 0 vid framgång eller -1 om otillräckligt minne kunde allokeras för att utöka den interna tabellen. Vid misslyckande läggs inga moduler till i den interna tabellen. Detta måste anropas före Py_Initialize().

Om Python initialiseras flera gånger måste PyImport_AppendInittab() eller PyImport_ExtendInittab() anropas före varje Python-initialisering.

PyObject *PyImport_ImportModuleAttr(PyObject *mod_name, PyObject *attr_name)
Returnera värde: Ny referens.

Importera modulen mod_name och hämta dess attribut attr_name.

Namnen måste vara Python str-objekt.

Hjälpfunktion som kombinerar PyImport_Import() och PyObject_GetAttr(). Den kan till exempel ge upphov till ImportError om modulen inte hittas och AttributeError om attributet inte finns.

Tillagd i version 3.14.

PyObject *PyImport_ImportModuleAttrString(const char *mod_name, const char *attr_name)
Returnera värde: Ny referens.

Liknar PyImport_ImportModuleAttr(), men namnen är UTF-8-kodade strängar istället för Python str-objekt.

Tillagd i version 3.14.