Articles of python c api

C Python: Ejecutar código Python dentro de un contexto

La función API de Python C PyEval_EvalCode permite ejecutar el código comstackdo de Python. Quiero ejecutar un bloque de código Python como si se estuviera ejecutando dentro del scope de una función , para que tenga su propio diccionario de variables locales que no afecten el estado global. Esto parece bastante fácil de hacer, ya […]

¿Cómo crear un generador / iterador con la API de Python C?

¿Cómo puedo replicar el siguiente código de Python con la API de Python C? class Sequence(): def __init__(self, max): self.max = max def data(self): i = 0 while i < self.max: yield i i += 1 Hasta ahora, tengo esto: #include #include /* Define a new object class, Sequence. */ typedef struct { PyObject_HEAD size_t […]

Detener Python incrustado

Estoy incorporando el intérprete de Python a un progtwig de C. Sin embargo, puede suceder que mientras se ejecuta algún script de Python a través de PyRun_SimpleString() se ejecutará en un bucle infinito o se ejecutará durante demasiado tiempo. Considere PyRun_SimpleString(“while 1: pass”); Al evitar que el progtwig principal se bloquee, pensé que podía ejecutar […]

Python C API no carga el módulo

Estoy intentando cargar un módulo de Python que contiene una importación de números y matemáticas en C, usando la API de C. Puedo cargar y ejecutar el módulo pero, si importo el módulo matemático, no funciona. Estoy usando Arch Linux, Python 2.7.2 y gcc. Aquí los códigos: #include #include #include int main(int argc, char **argv) […]

Crea un objeto usando la API C de Python

Digamos que tengo mi diseño de objeto definido como: typedef struct { PyObject_HEAD // Other stuff… } pyfoo; … y mi definición de tipo: static PyTypeObject pyfoo_T = { PyObject_HEAD_INIT(NULL) // … pyfoo_new, }; ¿Cómo creo una nueva instancia de pyfoo algún lugar dentro de mi extensión C?

¿Cómo pasar la bandera a gcc en el script setup.py de Python?

Estoy escribiendo una extensión de Python en C que requiere el marco CoreFoundation (entre otras cosas). Esto comstack bien con: gcc -o foo foo.c -framework CoreFoundation -framework Python (“-framework” es una extensión gcc solo para Apple, pero está bien porque de todos modos estoy usando su marco específico) ¿Cómo le digo a setup.py que pase […]

Crear instancia de una clase de python, declarada en python, con la API de C

Quiero crear una instancia de una clase de Python definida en el ámbito __main__ con la API de C. Por ejemplo, la clase se llama MyClass y se define de la siguiente manera: class MyClass: def __init__(self): pass El tipo de clase vive bajo el scope __main__ . Dentro de la aplicación C, quiero crear […]

Cómo atrapar la salida estándar de Python en código c ++

Tengo un progtwig que durante su ejecución a veces necesita llamar a python para realizar algunas tareas. Necesito una función que llame a python y capture la salida estándar de pythons y la coloque en algún archivo. Esta es una statement de la función. pythonCallBackFunc(const char* pythonInput) Mi problema es capturar toda la salida de […]

Python (y la API de Python C): __new__ versus __init__

La pregunta que voy a hacer parece ser un duplicado del uso de Python de __new__ y __init__? , pero a pesar de eso, todavía no me queda claro exactamente cuál es la diferencia práctica entre __new__ y __init__ . Antes de que se apresure a decirme que __new__ es para crear objetos y __init__ […]

PyEval_InitThreads en Python 3: ¿Cómo / cuándo llamarlo? (La saga continúa hasta la náusea)

Básicamente, parece haber una confusión / ambigüedad masiva sobre cuándo se supone que se debe llamar exactamente PyEval_InitThreads() , y qué llamadas de API de acompañamiento son necesarias. La documentación oficial de Python desafortunadamente es muy ambigua. Ya hay muchas preguntas sobre stackoverflow con respecto a este tema, y ​​de hecho, personalmente ya hice una […]