Skip to main content
IBM Quantum Platform

Interface C API disponible sur Python

qiskit.capi

Ce module permet d'interagir en mode « Python -space » avec l'API C publique de Qiskit.

Pour consulter la documentation relative à l'API C, voir API C de Qiskit.


Interaction avec le système de compilation

Le paquet « Pythonqiskit » contient tous les fichiers d'en-tête de l'API C de Qiskit, ainsi qu'une bibliothèque d'objets partagés compilée qui inclut toutes les fonctions de l'API C. Vous pouvez accéder aux coordonnées de ces deux objets à l'aide des fonctions get_include() et get_lib() respectivement.

Avertissement

En règle générale*, il est déconseillé* de lier directement la sortie de get_lib(), à moins de savoir exactement ce que vous faites. En particulier, la liaison directe à cet objet ne constitue pas une méthode sûre pour créer un module d'extension Python distribuable qui utilise l'API C de Qiskit.

Toutefois, si vous comprenez bien toutes les précautions à prendre en matière de liaison directe, vous pouvez utiliser cette fonction pour obtenir l'emplacement de la bibliothèque.

get_include

qiskit.capi.get_include()

GitHub

Récupérez le répertoire contenant le fichier qiskit.h d'en-tête C et les fichiers auxiliaires qiskit/*.h internes.

Lorsque vous utilisez Qiskit comme dépendance de compilation, vous devez généralement ajouter ce répertoire au chemin de recherche des fichiers d'en-tête de votre compilateur, par exemple :

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

L'emplacement de ce répertoire au sein des données du paquet Qiskit n'est pas fixe et peut varier d'une version à l'autre de Qiskit. Vous devez toujours utiliser cette fonction pour récupérer le répertoire.

Retours

un chemin absolu vers le répertoire contenant les fichiers d'en-tête du paquet.

Type de retour

str

get_lib

qiskit.capi.get_lib()

GitHub

Récupérer le chemin d'accès à une bibliothèque d'objets partagés contenant tous les symboles exportés de l'API C.

Avertissement

En règle générale*, il est déconseillé de* créer un lien direct vers cet objet. En particulier, l'utilisation de liens directs vers cet objet ne constitue pas une méthode sûre pour développer un module d'extension Python utilisant l'API C de Qiskit.

Si vous le souhaitez, vous pouvez utiliser ctypes pour accéder aux symboles de l'API C contenus dans cet objet; sachez toutefois que les types de l'API C déclarés dans le fichier d'en-tête ne sont pas interchangeables avec les objets de l' Python qui leur correspondent.

L'emplacement et le nom de ce fichier dans les données du paquet Qiskit ne sont pas fixes et peuvent varier d'une version de Qiskit à l'autre.

Retours

un chemin absolu vers la bibliothèque d'objets partagés contenant les symboles exportés de l'API C.

Type de retour

str


Liaisons natives vers l'API C

De plus, ce module contient ctypes des interfaces pour tous les types et toutes les fonctions de l'API C de Qiskit. Ces attributs sont disponibles en tant qu'attributs de module sous qiskit.capi le même nom que celui qu'ils portent dans l'API C. Par exemple, qiskit.capi.qk_circuit_new correspond à qk_circuit_new().

qiskit.capi.LIB

Type : ctypes.PyDLL

Une ctypes interface autour de la bibliothèque contenant l'API C de Qiskit.

Ces informations sont fournies par souci d'exhaustivité, mais vous pouvez accéder à toutes les fonctions, structures et énumérations directement depuis l'objet qiskit.capi module.

Structures

Les types « concrete struct » utilisés dans l'API C sont déclarés comme des types correspondants ctypes.Structure dotés de l'attribut « complete _fields_ ». Il est possible de les instancier et de les inspecter directement.

Les pointeurs opaques sont représentés par un ctypes.Structure type dont aucun _fields_ attribut n'est défini, et ne peuvent pas être instanciés. Elles sont généralement renvoyées par des fonctions sous la forme d'un ctypes.POINTER « wrapper de type ».

Enums

Lorsque l'API C comporte une énumération, ce module déclare une Pythonenum.Enum dont les valeurs correspondent à ctypes un type entier primitif. L'objet de type « Python -space Enum » reste un objet d'encapsulation de type « Python »; par conséquent, ctypes les fonctions qui renvoient une énumération renverront la valeur numérique brute, et non la valeur contenue dans le Enum. Les objets de l'espace Enum « Python » sont déclarés pour faciliter la construction des appels.

Fonctions

Toutes les fonctions de la bibliothèque publique de l'API C de Qiskit sont entièrement typées et réexportées à la racine du module sous le même nom qu'en C. Vous pouvez également accéder à ces fonctions depuis LIB, si vous préférez.

Notez que les fonctions « header-only », telles que qk_import(), ne sont pas exportées car elles ne font pas partie de l'objet de la bibliothèque API C.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.