Interfaccia API C da Python
qiskit.capi
Questo modulo offre un'interazione in modalità " Python -space" con l'API C pubblica di Qiskit.
Per la documentazione relativa all'API C, consultare Qiskit C API.
Interazione con il sistema di compilazione
Il pacchetto Python qiskit contiene tutti i file di intestazione dell'API C di Qiskit e una libreria di oggetti condivisi compilata che include tutte le funzioni dell'API C. È possibile accedere alle posizioni di questi due oggetti utilizzando rispettivamente le funzioni get_include()get_lib() e.
In genere è meglio non collegarsi direttamente all'output di get_lib(), a meno che non si sappia esattamente cosa si sta facendo. In particolare, il collegamento diretto a questo oggetto non è un metodo sicuro per creare un modulo di estensione distribuibile per l' Python e che utilizzi l'API C di Qiskit.
Tuttavia, se si conoscono bene tutte le avvertenze relative al collegamento diretto, è possibile utilizzare la funzione per ottenere il percorso della libreria.
get_include
qiskit.capi.get_include()
Scarica la directory contenente il file di qiskit.h intestazione C e i file ausiliari qiskit/*.h interni.
Quando si utilizza Qiskit come dipendenza di compilazione, in genere è necessario includere questa directory nel percorso di ricerca dei file di inclusione del compilatore, ad esempio:
qiskit_include=$(python -c 'import qiskit.capi; print(qiskit.capi.get_include())')
gcc -I "$qiskit_include" my_bin.c -o my_binLa posizione di questa directory all'interno dei dati del pacchetto Qiskit non è fissa e può variare da una versione all'altra di Qiskit. È consigliabile utilizzare sempre questa funzione per recuperare la directory.
Risultati
un percorso assoluto alla directory dei file di inclusione del pacchetto.
Tipo di restituzione
get_lib
qiskit.capi.get_lib()
Ottieni il percorso di una libreria di oggetti condivisi che contiene tutti i simboli esportati dell'API C.
In genere non è consigliabile creare un collegamento diretto a questo oggetto. In particolare, il collegamento diretto a questo oggetto non è un metodo sicuro per creare un modulo di estensione Python che utilizzi l'API C di Qiskit.
Se lo desideri, puoi utilizzare ctypes per accedere ai simboli dell'API C contenuti in questo oggetto; tieni però presente che i tipi dell'API C dichiarati nel file di intestazione non sono intercambiabili con gli oggetti Python a essi corrispondenti.
La posizione e il nome di questo file all'interno dei dati del pacchetto Qiskit non sono fissi e possono variare da una versione all'altra di Qiskit.
Risultati
un percorso assoluto alla libreria di oggetti condivisi contenente i simboli esportati dell'API C.
Tipo di restituzione
Binding nativi all'API C
Inoltre, questo modulo contiene ctypes i binding per tutti i tipi e le funzioni dell'API C di Qiskit. Questi sono disponibili come attributi dei moduli su qiskit.capi con lo stesso nome che hanno nell'API C. Ad esempio, qiskit.capi.qk_circuit_new corrisponde a qk_circuit_new().
qiskit.capi.LIB
Tipo: ctypes.PyDLL
Un ctypes wrapper attorno alla libreria che contiene l'API C di Qiskit.
Questo viene fornito per completezza, anche se è possibile accedere a tutte le funzioni, le strutture e le enumerazioni direttamente dall'oggetto qiskit.capi modulo.
Struct
I tipi di tipo "concrete struct " utilizzati nell'API C sono dichiarati come tipi corrispondenti ctypes.Structure con l'attributo "complete _fields_ ". È possibile istanziarli e esaminarli direttamente.
I puntatori opachi sono rappresentati da un ctypes.Structure tipo privo di _fields_ attributi e non possono essere istanziati. In genere vengono restituiti dalle funzioni racchiusi in un ctypes.POINTER wrapper di tipo.
Enum
Nei casi in cui l’API C preveda un’enumerazione, questo modulo dichiara un’ Pythonenum.Enum i i cui valori corrispondono a ctypes un tipo intero primitivo. L'oggetto di tipo " Python -space Enum " è comunque un oggetto di avvolgimento di tipo " Python ", quindi ctypes le funzioni che restituiscono un'enumerazione restituiranno il valore numerico grezzo, non il valore contenuto nel Enum. Gli oggetti -space Enum dell' Python sono dichiarati per facilitare la creazione delle chiamate.
Funzioni
Tutte le funzioni della libreria pubblica nell'API C di Qiskit sono completamente tipizzate e riesportate nella radice del modulo con lo stesso nome che hanno in C. LIBSe preferisci, puoi anche accedere alle funzioni da.
Si noti che le funzioni presenti solo nell'intestazione, come qk_import(), non vengono esportate poiché non fanno parte dell'oggetto della libreria API C.