Module importieren¶
-
PyObject *PyImport_ImportModule(const char *name)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Dies ist ein Wrapper um
PyImport_Import(), der ein const char* statt eines PyObject* als Argument nimmt.
-
PyObject *PyImport_ImportModuleNoBlock(const char *name)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Diese Funktion ist ein veralteter Alias von
PyImport_ImportModule().Geändert in Version 3.3: Diese Funktion schlug früher sofort fehl, wenn die Import-Sperre von einem anderen Thread gehalten wurde. In Python 3.3 wechselte das Sperrschema jedoch für die meisten Zwecke zu Sperren pro Modul, sodass das spezielle Verhalten dieser Funktion nicht mehr benötigt wird.
Veraltet seit Version 3.13, wird in Version 3.15 entfernt: Verwenden Sie stattdessen
PyImport_ImportModule().
-
PyObject *PyImport_ImportModuleEx(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist)¶
- Rückgabewert: Neue Referenz.
Ein Modul importieren. Dies wird am besten durch Verweis auf die eingebaute Python-Funktion
__import__()beschrieben.Der Rückgabewert ist eine neue Referenz auf das importierte Modul oder das Top-Level-Paket oder
NULLmit einer gesetzten Ausnahme im Fehlerfall. Wie bei__import__()ist der Rückgabewert bei Anforderung eines Untermoduls eines Pakets normalerweise das Top-Level-Paket, es sei denn, eine nicht leere fromlist wurde angegeben.Fehlgeschlagene Importe entfernen unvollständige Modulobjekte, wie bei
PyImport_ImportModule().
-
PyObject *PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)¶
- Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.7.
Ein Modul importieren. Dies wird am besten durch Verweis auf die eingebaute Python-Funktion
__import__()beschrieben, da die Standardfunktion__import__()diese Funktion direkt aufruft.Der Rückgabewert ist eine neue Referenz auf das importierte Modul oder das Top-Level-Paket oder
NULLmit einer gesetzten Ausnahme im Fehlerfall. Wie bei__import__()ist der Rückgabewert bei Anforderung eines Untermoduls eines Pakets normalerweise das Top-Level-Paket, es sei denn, eine nicht leere fromlist wurde angegeben.Hinzugefügt in Version 3.3.
-
PyObject *PyImport_ImportModuleLevel(const char *name, PyObject *globals, PyObject *locals, PyObject *fromlist, int level)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Ähnlich wie
PyImport_ImportModuleLevelObject(), aber der Name ist ein UTF-8-kodierter String anstelle eines Unicode-Objekts.Geändert in Version 3.3: Negative Werte für level werden nicht mehr akzeptiert.
-
PyObject *PyImport_Import(PyObject *name)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Dies ist eine übergeordnete Schnittstelle, die die aktuelle „Import-Hook-Funktion“ aufruft (mit einem expliziten level von 0, was einen absoluten Import bedeutet). Sie ruft die Funktion
__import__()aus den__builtins__der aktuellen Globals auf. Das bedeutet, dass der Import unter Verwendung der im aktuellen Umfeld installierten Import-Hooks erfolgt.Diese Funktion verwendet immer absolute Imports.
-
PyObject *PyImport_ReloadModule(PyObject *m)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Ein Modul neu laden. Gibt eine neue Referenz auf das neu geladene Modul zurück oder
NULLmit einer gesetzten Ausnahme im Fehlerfall (das Modul existiert in diesem Fall noch).
-
PyObject *PyImport_AddModuleRef(const char *name)¶
- Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.13.
Gibt das Modulobjekt zurück, das einem Modulnamen entspricht.
Das Argument name kann die Form
package.modulehaben. Zuerst wird das Modul-Dictionary geprüft, ob dort eines vorhanden ist, und wenn nicht, wird ein neues erstellt und in das Modul-Dictionary eingefügt.Gibt eine starke Referenz auf das Modul im Erfolgsfall zurück. Gibt
NULLmit einer gesetzten Ausnahme im Fehlerfall zurück.Der Modulname name wird aus UTF-8 dekodiert.
Diese Funktion lädt oder importiert das Modul nicht; wenn das Modul noch nicht geladen wurde, erhalten Sie ein leeres Modulobjekt. Verwenden Sie
PyImport_ImportModule()oder eine seiner Varianten, um ein Modul zu importieren. Paketstrukturen, die durch einen Punkt getrennten Namen für name impliziert werden, werden nicht erstellt, wenn sie noch nicht vorhanden sind.Hinzugefügt in Version 3.13.
-
PyObject *PyImport_AddModuleObject(PyObject *name)¶
- Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI seit Version 3.7.
Ähnlich wie
PyImport_AddModuleRef(), gibt aber eine ausgeliehene Referenz zurück und name ist ein Pythonstr-Objekt.Hinzugefügt in Version 3.3.
-
PyObject *PyImport_AddModule(const char *name)¶
- Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI.
Ähnlich wie
PyImport_AddModuleRef(), gibt aber eine ausgeliehene Referenz zurück.
-
PyObject *PyImport_ExecCodeModule(const char *name, PyObject *co)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Ein Modul, dessen Name (möglicherweise in der Form
package.module) und ein Codeobjekt, das aus einer Python-Bytecode-Datei gelesen oder aus der eingebauten Funktioncompile()erhalten wurde, angegeben ist, wird geladen. Gibt eine neue Referenz auf das Modulobjekt zurück oderNULLmit einer gesetzten Ausnahme, wenn ein Fehler aufgetreten ist. name wird im Fehlerfall aussys.modulesentfernt, auch wenn name beim Eintritt inPyImport_ExecCodeModule()bereits insys.modulesvorhanden war. Das Belassen von unvollständig initialisierten Modulen insys.modulesist gefährlich, da Importe solcher Module keine Möglichkeit haben zu wissen, dass das Modulobjekt in einem unbekannten (und wahrscheinlich beschädigten im Hinblick auf die Absichten des Modulautors) Zustand ist.Der
__spec__und__loader__des Moduls werden gesetzt, falls sie noch nicht gesetzt sind, mit den entsprechenden Werten. Der Loader des Specs wird auf das__loader__des Moduls (falls gesetzt) und andernfalls auf eine Instanz vonSourceFileLoadergesetzt.Das Attribut
__file__des Moduls wird auf dasco_filenamedes Codeobjekts gesetzt. Falls zutreffend, wird auch__cached__gesetzt.Diese Funktion lädt das Modul neu, falls es bereits importiert wurde. Siehe
PyImport_ReloadModule()für den vorgesehenen Weg, ein Modul neu zu laden.Wenn name auf einen Punkt-getrennten Namen der Form
package.moduleverweist, werden noch nicht erstellte Paketstrukturen weiterhin nicht erstellt.Siehe auch
PyImport_ExecCodeModuleEx()undPyImport_ExecCodeModuleWithPathnames().Geändert in Version 3.12: Das Setzen von
__cached__und__loader__ist veraltet. SieheModuleSpecfür Alternativen.
-
PyObject *PyImport_ExecCodeModuleEx(const char *name, PyObject *co, const char *pathname)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Wie
PyImport_ExecCodeModule(), aber das Attribut__file__des Modulobjekts wird auf pathname gesetzt, wenn es nichtNULList.Siehe auch
PyImport_ExecCodeModuleWithPathnames().
-
PyObject *PyImport_ExecCodeModuleObject(PyObject *name, PyObject *co, PyObject *pathname, PyObject *cpathname)¶
- Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.7.
Wie
PyImport_ExecCodeModuleEx(), aber das Attribut__cached__des Modulobjekts wird auf cpathname gesetzt, wenn es nichtNULList. Von den drei Funktionen ist dies die bevorzugte.Hinzugefügt in Version 3.3.
Geändert in Version 3.12: Das Setzen von
__cached__ist veraltet. SieheModuleSpecfür Alternativen.
-
PyObject *PyImport_ExecCodeModuleWithPathnames(const char *name, PyObject *co, const char *pathname, const char *cpathname)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Wie
PyImport_ExecCodeModuleObject(), aber name, pathname und cpathname sind UTF-8-kodierte Strings. Es wird auch versucht, den Wert für pathname aus cpathname zu ermitteln, wenn ersteres aufNULLgesetzt ist.Hinzugefügt in Version 3.2.
Geändert in Version 3.3: Verwendet
imp.source_from_cache()bei der Berechnung des Quellpfads, wenn nur der Bytecode-Pfad angegeben ist.Geändert in Version 3.12: Verwendet nicht mehr das entfernte Modul
imp.
-
long PyImport_GetMagicNumber()¶
- Teil der Stable ABI.
Gibt die Magische Zahl für Python-Bytecode-Dateien (auch bekannt als
.pyc-Datei) zurück. Die Magische Zahl sollte in den ersten vier Bytes der Bytecode-Datei im Little-Endian-Byte-Format vorhanden sein. Gibt bei einem Fehler-1zurück.Geändert in Version 3.3: Rückgabewert
-1im Fehlerfall.
-
const char *PyImport_GetMagicTag()¶
- Teil der Stable ABI.
Gibt den magischen Tag-String für Python-Bytecode-Dateinamen im PEP 3147-Format zurück. Beachten Sie, dass der Wert unter
sys.implementation.cache_tagmaßgebend ist und anstelle dieser Funktion verwendet werden sollte.Hinzugefügt in Version 3.2.
-
PyObject *PyImport_GetModuleDict()¶
- Rückgabewert: Ausgeliehene Referenz. Teil der Stable ABI.
Gibt das Verzeichnis zurück, das für die Modulverwaltung verwendet wird (auch bekannt als
sys.modules). Beachten Sie, dass dies eine pro Interpreter variable ist.
-
PyObject *PyImport_GetModule(PyObject *name)¶
- Rückgabewert: Neue Referenz. Teil der Stable ABI seit Version 3.8.
Gibt das bereits importierte Modul mit dem gegebenen Namen zurück. Wenn das Modul noch nicht importiert wurde, wird
NULLzurückgegeben, aber kein Fehler gesetzt. GibtNULLzurück und setzt einen Fehler, wenn die Suche fehlschlug.Hinzugefügt in Version 3.7.
-
PyObject *PyImport_GetImporter(PyObject *path)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt ein Finder-Objekt für ein
sys.path/pkg.__path__-Element path zurück, möglicherweise durch Abrufen aus dem Dictionarysys.path_importer_cache. Wenn es noch nicht zwischengespeichert wurde, werdensys.path_hooksdurchlaufen, bis ein Hook gefunden wird, der das Pfadelement handhaben kann. GibtNonezurück, wenn kein Hook dazu in der Lage war; dies teilt unserem Aufrufer mit, dass der pfadbasiertte Finder keinen Finder für dieses Pfadelement finden konnte. Zwischenspeichert das Ergebnis insys.path_importer_cache. Gibt eine neue Referenz auf das Finder-Objekt zurück.
-
int PyImport_ImportFrozenModuleObject(PyObject *name)¶
- Teil der Stable ABI seit Version 3.7.
Lädt ein gefrorenes Modul namens name. Gibt
1für Erfolg,0zurück, wenn das Modul nicht gefunden wird, und-1mit einer gesetzten Ausnahme, wenn die Initialisierung fehlschlug. Um auf das importierte Modul nach erfolgreichem Laden zuzugreifen, verwenden SiePyImport_ImportModule(). (Beachten Sie die irreführende Bezeichnung – diese Funktion würde das Modul neu laden, wenn es bereits importiert worden wäre.)Hinzugefügt in Version 3.3.
Geändert in Version 3.4: Das Attribut
__file__wird nicht mehr auf dem Modul gesetzt.
-
int PyImport_ImportFrozenModule(const char *name)¶
- Teil der Stable ABI.
Ähnlich wie
PyImport_ImportFrozenModuleObject(), aber der Name ist ein UTF-8-kodierter String anstelle eines Unicode-Objekts.
-
struct _frozen¶
Dies ist der Strukturtyp für Deskriptoren von gefrorenen Modulen, wie er vom freeze-Dienstprogramm generiert wird (siehe
Tools/freeze/in der Python-Quellverteilung). Seine Definition, die inInclude/import.hzu finden ist, lautet:struct _frozen { const char *name; const unsigned char *code; int size; bool is_package; };
Geändert in Version 3.11: Das neue Feld
is_packagegibt an, ob das Modul ein Paket ist oder nicht. Dies ersetzt das Setzen des Feldessizeauf einen negativen Wert.
-
const struct _frozen *PyImport_FrozenModules¶
Dieser Zeiger wird initialisiert, um auf ein Array von
_frozen-Einträgen zu zeigen, der von einem Eintrag terminiert wird, dessen Mitglieder alleNULLoder Null sind. Wenn ein gefrorenes Modul importiert wird, wird es in dieser Tabelle gesucht. Drittanbieter-Code könnte dies ausnutzen, um eine dynamisch erstellte Sammlung von gefrorenen Modulen bereitzustellen.
-
int PyImport_AppendInittab(const char *name, PyObject *(*initfunc)(void))¶
- Teil der Stable ABI.
Fügt ein einzelnes Modul zur bestehenden Tabelle der eingebauten Module hinzu. Dies ist ein praktischer Wrapper um
PyImport_ExtendInittab(), der-1zurückgibt, wenn die Tabelle nicht erweitert werden konnte. Das neue Modul kann unter dem Namen name importiert werden und verwendet die Funktion initfunc als Initialisierungsfunktion, die beim ersten Versuch des Imports aufgerufen wird. Dies sollte vorPy_Initialize()aufgerufen werden.
-
struct _inittab¶
Struktur, die einen einzelnen Eintrag in der Liste der eingebauten Module beschreibt. Programme, die Python einbetten, können ein Array dieser Strukturen in Verbindung mit
PyImport_ExtendInittab()verwenden, um zusätzliche eingebaute Module bereitzustellen. Die Struktur besteht aus zwei Mitgliedern:-
const char *name¶
Der Modulname als ASCII-kodierter String.
-
const char *name¶
-
int PyImport_ExtendInittab(struct _inittab *newtab)¶
Fügt eine Sammlung von Modulen zur Tabelle der eingebauten Module hinzu. Das Array newtab muss mit einem Sentinel-Eintrag enden, der
NULLfür das Feldnameenthält; das Fehlen des Sentinel-Wertes kann zu einem Speicherfehler führen. Gibt0bei Erfolg oder-1zurück, wenn nicht genügend Speicher zur Erweiterung der internen Tabelle zugewiesen werden konnte. Im Fehlerfall werden keine Module zur internen Tabelle hinzugefügt. Dies muss vorPy_Initialize()aufgerufen werden.Wenn Python mehrmals initialisiert wird, müssen
PyImport_AppendInittab()oderPyImport_ExtendInittab()vor jeder Python-Initialisierung aufgerufen werden.
-
PyObject *PyImport_ImportModuleAttr(PyObject *mod_name, PyObject *attr_name)¶
- Rückgabewert: Neue Referenz.
Importiert das Modul mod_name und ruft dessen Attribut attr_name ab.
Namen müssen Python
str-Objekte sein.Hilfsfunktion, die
PyImport_Import()undPyObject_GetAttr()kombiniert. Sie kann beispielsweiseImportErrorauslösen, wenn das Modul nicht gefunden wird, undAttributeError, wenn das Attribut nicht existiert.Hinzugefügt in Version 3.14.
-
PyObject *PyImport_ImportModuleAttrString(const char *mod_name, const char *attr_name)¶
- Rückgabewert: Neue Referenz.
Ähnlich wie
PyImport_ImportModuleAttr(), aber Namen sind UTF-8-kodierte Strings anstelle von Pythonstr-Objekten.Hinzugefügt in Version 3.14.