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 NULL mit 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 NULL mit 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 NULL mit 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.module haben. 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 NULL mit 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 Python str-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 Funktion compile() erhalten wurde, angegeben ist, wird geladen. Gibt eine neue Referenz auf das Modulobjekt zurück oder NULL mit einer gesetzten Ausnahme, wenn ein Fehler aufgetreten ist. name wird im Fehlerfall aus sys.modules entfernt, auch wenn name beim Eintritt in PyImport_ExecCodeModule() bereits in sys.modules vorhanden war. Das Belassen von unvollständig initialisierten Modulen in sys.modules ist 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 von SourceFileLoader gesetzt.

Das Attribut __file__ des Moduls wird auf das co_filename des 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.module verweist, werden noch nicht erstellte Paketstrukturen weiterhin nicht erstellt.

Siehe auch PyImport_ExecCodeModuleEx() und PyImport_ExecCodeModuleWithPathnames().

Geändert in Version 3.12: Das Setzen von __cached__ und __loader__ ist veraltet. Siehe ModuleSpec fü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 nicht NULL ist.

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 nicht NULL ist. 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. Siehe ModuleSpec fü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 auf NULL gesetzt 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 -1 zurück.

Geändert in Version 3.3: Rückgabewert -1 im 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_tag maß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 NULL zurückgegeben, aber kein Fehler gesetzt. Gibt NULL zurü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 Dictionary sys.path_importer_cache. Wenn es noch nicht zwischengespeichert wurde, werden sys.path_hooks durchlaufen, bis ein Hook gefunden wird, der das Pfadelement handhaben kann. Gibt None zurü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 in sys.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 1 für Erfolg, 0 zurück, wenn das Modul nicht gefunden wird, und -1 mit einer gesetzten Ausnahme, wenn die Initialisierung fehlschlug. Um auf das importierte Modul nach erfolgreichem Laden zuzugreifen, verwenden Sie PyImport_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 in Include/import.h zu 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_package gibt an, ob das Modul ein Paket ist oder nicht. Dies ersetzt das Setzen des Feldes size auf 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 alle NULL oder 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 -1 zurü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 vor Py_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.

PyObject *(*initfunc)(void)

Initialisierungsfunktion für ein in den Interpreter eingebautes Modul.

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 NULL für das Feld name enthält; das Fehlen des Sentinel-Wertes kann zu einem Speicherfehler führen. Gibt 0 bei Erfolg oder -1 zurü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 vor Py_Initialize() aufgerufen werden.

Wenn Python mehrmals initialisiert wird, müssen PyImport_AppendInittab() oder PyImport_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() und PyObject_GetAttr() kombiniert. Sie kann beispielsweise ImportError auslösen, wenn das Modul nicht gefunden wird, und AttributeError, 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 Python str-Objekten.

Hinzugefügt in Version 3.14.