Skip to main content
IBM Quantum Platform

Interface da API C em Python

qiskit.capi

Este módulo oferece interações entre o espaço de dados do Python e a API C pública do Qiskit.

Para obter documentação sobre a própria API C, consulte a API C do Qiskit.


Interação com o sistema de compilação

O pacote Python qiskit contém todos os arquivos de cabeçalho da API C do Qiskit e uma biblioteca de objetos compartilhados compilada que inclui todas as funções da API C. Você pode acessar as localizações desses dois objetos usando as funções get_include() e, get_lib() respectivamente.

Aviso

Normalmente, você não deve vincular diretamente à saída de get_lib(), a menos que saiba o que está fazendo. Em particular, a vinculação direta a esse objeto não é uma maneira segura de criar um módulo de extensão distribuível para o Python que utilize a API C do Qiskit.

No entanto, se você compreender todas as ressalvas relacionadas à ligação direta, poderá usar essa função para obter a localização da biblioteca.

get_include

qiskit.capi.get_include()

GitHub

Obtenha o diretório que contém o arquivo de qiskit.h cabeçalho C e os arquivos auxiliares qiskit/*.h internos.

Ao usar o Qiskit como dependência de compilação, geralmente é recomendável incluir esse diretório no caminho de busca de inclusões do seu compilador, como por exemplo:

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

A localização desse diretório dentro dos dados do pacote Qiskit não é fixa e pode variar entre as versões do Qiskit. Você deve sempre usar essa função para recuperar o diretório.

Retorna

um caminho absoluto para o diretório de arquivos de inclusão do pacote.

Tipo de retorno

str

get_lib

qiskit.capi.get_lib()

GitHub

Obtenha o caminho para uma biblioteca de objeto compartilhado que contenha todos os símbolos exportados da API C.

Aviso

Normalmente, você não deve criar uma ligação direta com este objeto. Em particular, vincular diretamente a esse objeto não é uma maneira segura de criar um módulo de extensão do Python que utilize a API C do Qiskit.

Se desejar, você pode usar ctypes para acessar os símbolos da API C contidos neste objeto; no entanto, esteja ciente de que os tipos da API C declarados no arquivo de cabeçalho não são intercambiáveis com os objetos do Python que lhes correspondem.

A localização e o nome deste arquivo dentro dos dados do pacote Qiskit não são fixos e podem mudar entre as versões do Qiskit.

Retorna

um caminho absoluto para a biblioteca de objeto compartilhado que contém os símbolos exportados da API C.

Tipo de retorno

str


Ligações nativas à API C

Além disso, este módulo contém ctypes ligações a todos os tipos e funções da API C do Qiskit. Eles estão disponíveis como atributos de módulo, qiskit.capi com o mesmo nome que possuem na API C. Por exemplo, qiskit.capi.qk_circuit_new corresponde a qk_circuit_new().

qiskit.capi.LIB

Tipo: ctypes.PyDLL

Um ctypes wrapper em torno da biblioteca que contém a API C do Qiskit.

Isso é fornecido para fins de completude, embora você possa acessar todas as funções, estruturas e enumerações diretamente a partir do qiskit.capi objeto do módulo.

Estruturas

Os tipos de concreto struct utilizados na API C são declarados como tipos correspondentes ctypes.Structure com o atributo “completo _fields_ ”. É possível instanciá-los e inspecioná-los diretamente.

Os ponteiros opacos são representados por um ctypes.Structure tipo sem nenhum _fields_ atributo definido e não podem ser instanciados. Normalmente, eles são retornados por funções envoltas em um ctypes.POINTER wrapper de tipo.

Enumerações

Nos casos em que a API C possui uma enumeração, este módulo declara uma Pythonenum.Enum cujos valores correspondem a ctypes um tipo inteiro primitivo. O objeto do tipo Python -space Enum ainda é um objeto de encapsulamento Python; portanto, ctypes funções que retornam uma enumeração retornarão o valor numérico bruto, e não o valor no Enum. Os objetos do espaço Enum Python são declarados para facilitar a construção de chamadas.

Funções

Todas as funções da biblioteca pública na API C do Qiskit são totalmente tipadas e reexportadas na raiz do módulo com o mesmo nome que possuem em C. Você também pode acessar as funções a partir de LIB, se preferir.

Observe que funções apenas de cabeçalho, como qk_import(), não são exportadas, pois não fazem parte do objeto da biblioteca da API C.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.