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 Pythonstr
-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 funktionencompile()
, laddar modulen. Returnerar en ny referens till modulobjektet, ellerNULL
med en undantagsuppsättning om ett fel inträffade. name tas bort frånsys.modules
i felfall, även om name redan fanns isys.modules
vid inmatningen tillPyImport_ExecCodeModule()
. Att lämna ofullständigt initialiserade moduler isys.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 avSourceFileLoader
.Modulens attribut
__file__
kommer att sättas till kodobjektetsco_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()
ochPyImport_ExecCodeModuleWithPathnames()
.Ändrad i version 3.12: Inställningen av
__cached__
och__loader__
är föråldrad. SeModuleSpec
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 ärNULL
.
-
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 ärNULL
. 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. SeModuleSpec
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 tillNULL
.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. ReturnerarNULL
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ånsys.path_importer_cache
dict. Om det ännu inte var cachat, traverserasys.path_hooks
tills en hook hittas som kan hantera sökvägsobjektet. ReturneraNone
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 isys.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ändPyImport_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 iInclude/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ältetsize
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 ärNULL
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örePy_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.
-
const char *name¶
-
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ältetname
; om sentinel-värdet inte anges kan det resultera i ett minnesfel. Returnerar0
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örePy_Initialize()
.Om Python initialiseras flera gånger måste
PyImport_AppendInittab()
ellerPyImport_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()
ochPyObject_GetAttr()
. Den kan till exempel ge upphov tillImportError
om modulen inte hittas ochAttributeError
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 Pythonstr
-objekt.Tillagd i version 3.14.