Skip to main content
IBM Quantum Platform

C-API-Schnittstelle von Python

qiskit.capi

Dieses Modul ermöglicht die Interaktion zwischen „ Python “ und der öffentlichen C-API von Qiskit.

Dokumentation zur C-API selbst finden Sie unter „Qiskit C API “.


Interaktion mit dem Build-System

Das Paket „ Pythonqiskit “ enthält alle Header-Dateien der Qiskit-C-API sowie eine kompilierte Shared-Object-Bibliothek, die alle Funktionen der C-API umfasst. Auf die Positionen dieser beiden Objekte kannst du mit den Funktionen get_include() bzw get_lib() . zugreifen.

Warnung

Normalerweise solltest du nicht direkt auf die Ausgabe von verweisen get_lib(), es sei denn, du weißt genau, was du tust. Insbesondere ist die direkte Verknüpfung mit diesem Objekt keine sichere Methode, um ein verteilbares Python -Erweiterungsmodul zu erstellen, das die C-API von Qiskit nutzt.

Wenn Sie jedoch alle Vorbehalte gegenüber der direkten Verknüpfung kennen, können Sie die Funktion nutzen, um den Speicherort der Bibliothek zu ermitteln.

get_include

qiskit.capi.get_include()

GitHub

Laden Sie das Verzeichnis herunter, das die qiskit.h C-Header-Datei und die internen qiskit/*.h Hilfsdateien enthält.

Wenn Sie Qiskit als Build-Abhängigkeit verwenden, sollten Sie dieses Verzeichnis in der Regel in den Suchpfad Ihres Compilers aufnehmen, zum Beispiel:

qiskit_include=$(python -c 'import qiskit.capi; print(qiskit.capi.get_include())')
gcc -I "$qiskit_include" my_bin.c -o my_bin

Der Speicherort dieses Verzeichnisses innerhalb der Qiskit-Paketdaten ist nicht fest vorgegeben und kann sich von einer Qiskit-Version zur nächsten ändern. Sie sollten immer diese Funktion verwenden, um das Verzeichnis abzurufen.

Rückgabe

ein absoluter Pfad zum Verzeichnis mit den Include-Dateien des Pakets.

Rückgabetyp

str

get_lib

qiskit.capi.get_lib()

GitHub

Ermitteln Sie den Pfad zu einer Shared-Object-Bibliothek, die alle exportierten C-API-Symbole enthält.

Warnung

In der Regel sollten Sie keine direkten Verknüpfungen zu diesem Objekt herstellen. Insbesondere ist die direkte Verknüpfung mit diesem Objekt keine sichere Methode, um ein „ Python “-Erweiterungsmodul zu erstellen, das die C-API von Qiskit nutzt.

Sie können, wenn Sie möchten, verwenden, um ctypes auf die in diesem Objekt enthaltenen C-API-Symbole zuzugreifen; beachten Sie jedoch, dass die in der Header-Datei deklarierten C-API-Typen nicht mit den ihnen entsprechenden Objekten von Python austauschbar sind.

Der Speicherort und der Name dieser Datei innerhalb der Qiskit-Paketdaten sind nicht festgelegt und können sich von einer Qiskit-Version zur nächsten ändern.

Rückgabe

ein absoluter Pfad zu der Shared-Object-Bibliothek, die die exportierten Symbole der C-API enthält.

Rückgabetyp

str


Native Bindungen an die C-API

Darüber hinaus enthält ctypes dieses Modul Bindings zu allen Typen und Funktionen der Qiskit-C-API. Diese sind als Modulattribute unter qiskit.capi demselben Namen verfügbar, den sie auch in der C-API haben. qk_circuit_new()Beispielsweise entspricht. qiskit.capi.qk_circuit_new

qiskit.capi.LIB

Typ: ctypes.PyDLL

Ein ctypes Wrapper um die Bibliothek, die die Qiskit-C-API enthält.

Dies dient der Vollständigkeit; Sie können jedoch direkt über das qiskit.capi Modulobjekt auf alle Funktionen, Strukturen und Aufzählungen zugreifen.

Strukturen

Die struct in der C-API verwendeten Betontypen werden als entsprechende ctypes.Structure Typen mit dem Attribut „complete“ _fields_ deklariert. Diese können direkt instanziiert und überprüft werden.

Undurchsichtige Zeiger werden durch einen ctypes.Structure Typ ohne _fields_ festgelegte Attribute dargestellt und können nicht instanziiert werden. Sie werden in der Regel von Funktionen zurückgegeben, die in einen ctypes.POINTER Typ-Wrapper eingeschlossen sind.

Aufzählungen

An Stellen, an denen die C-API eine Aufzählung enthält, deklariert dieses Modul eine Pythonenum.Enum, deren Werte einem entsprechenden ctypes primitiven Ganzzahltyp entsprechen. Das Objekt vom Typ „ Python -space“ Enum ist nach wie vor ein umhüllendes „ Python “-Objekt, sodass ctypes Funktionen, die eine Aufzählung zurückgeben, den rohen numerischen Wert zurückgeben und nicht den Wert in der Enum. Die Objekte im Namensraum Enum „ Python “ werden zur Vereinfachung der Aufrufkonstruktion deklariert.

Funktionen

Alle Funktionen der öffentlichen Bibliothek in der Qiskit-C-API sind vollständig typisiert und werden im Modulstamm unter demselben Namen wie in C erneut exportiert. LIBSie können die Funktionen auch über aufrufen, falls Sie dies bevorzugen.

Beachten Sie, dass reine Header-Funktionen, wie z. B. qk_import(), nicht exportiert werden, da sie nicht Teil des C-API-Bibliotheksobjekts sind.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.