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.
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()
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_binL'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
get_lib
qiskit.capi.get_lib()
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.
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
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.