Skip to main content
IBM Quantum Platform

Configuración

La API de C de Qiskit requiere una configuración mínima.

QISKIT_PYTHON_EXTENSION

Si se definen antes de incluir qiskit.h, los archivos de cabecera definirán todos los símbolos de forma que sean compatibles con los módulos de extensión de « Python ». Esto significa que todas las funciones de la API se resolverán como desreferencias de punteros a funciones a partir de una tabla de consulta.

Se trata de una macro definida por el usuario y no por Qiskit.

qk_import

int qk_import(void)

Importa la API C de Qiskit desde el paquete Pythonqiskit -space.

Debes llamar a esta función una vez por unidad de compilación, antes de intentar llamar a cualquier función de la API de C. Si no se hace así, suele provocar referencias a punteros nulos en tiempo de ejecución.

Lo normal es que quieras hacer esto dentro de la función de inicialización de tu PyInit_* módulo. Por ejemplo, en my_extension.c:

#define QISKIT_PYTHON_EXTENSION
#include <Python.h>
#include <qiskit.h>

static struct PyModuleDef my_extension_mod = {
   .m_base = PyModuleDef_HEAD_INIT,
   .m_name = "my_extension",
};

PyMODINIT_FUNC PyInit_my_extension(void) {
   if (qk_import() < 0) {
      return NULL;
   }
   return PyModuleDef_Init(&my_extension_mod);
}

Esta función solo está definida si QISKIT_PYTHON_EXTENSION se definió antes de incluir qiskit.h.

Devuelve

0 si se realiza correctamente, un valor negativo si falla.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.