Articles of python c api

Obtener la ruta LIB de Python

Puedo ver que la ruta INCLUDE es sysconfig.get_path(‘include’) . Pero no veo ningún valor similar para LIB . NumPy lo codifica directamente como os.path.join(sys.prefix, “libs”) en Windows y get_config_var(‘LIBDIR’) (no documentado y faltante en Windows) de lo contrario. ¿Hay una forma más compatible?

leyendo una variable global de python en c

Estoy tratando de aprender a usar la API de Python / C correctamente. Lo único que tengo que hacer es leer una variable global (en mi diccionario de casos, pero estoy empezando con una variable entera simple). Usando la discusión: ¿Cómo acceder a una variable global de Python desde C? y la fuente de la […]

E / S de archivos en la API de Python 3 C

La API de C en Python 3.0 ha cambiado (en desuso) muchas de las funciones para objetos de archivo. Antes, en 2.X, podías usar PyObject* PyFile_FromString(char *filename, char *mode) para crear un objeto de archivo Python, por ejemplo: PyObject *myFile = PyFile_FromString(“test.txt”, “r”); … pero dicha función ya no existe en Python 3.0. ¿Cuál sería […]

Llama a una función de Python desde un progtwig en C

Tengo una aplicación en C y en algún momento necesito resolver un problema de optimización no lineal. Desafortunadamente, AFAIK hay recursos muy limitados para hacer eso en C (déjeme saber de otra manera). Sin embargo, es bastante simple hacerlo en Python, por ejemplo, scipy.optimize.minimize . Mientras intentaba hacerlo, encontré algunas de las fallas que parecen […]

Alternativas de tipo fusionado en cython.

Estoy trabajando en reescribir un módulo de python originalmente escrito en C usando python-C api a Cython. El módulo también usa NumPy. Un desafío importante del proyecto es mantener la velocidad actual del módulo y también debería funcionar para todos los tipos de datos de Numpy. Estoy pensando en usar un tipo de datos fusionados […]

¿Cómo uso apropiadamente la API C de Python y las excepciones?

si hago algo como >>> x = int(1,2,3,4,5) Inmediatamente recibo un error fatal (uno que terminaría con la ejecución del progtwig si estuviera en un script escrito previamente) Traceback (most recent call last): File “”, line 1, in TypeError: int() takes at most 2 arguments (5 given) y x permanece indefinido: >>> x Traceback (most […]

Accediendo a la vista de una matriz NumPy usando la API de C

En un módulo de extensión de Python que he escrito en C ++, uso el siguiente fragmento de código para convertir una matriz NumPy en una matriz de Armadillo para usar en la parte C ++ del código: static arma::mat convertPyArrayToArma(PyArrayObject* pyarr, int nrows, int ncols) { // Check if the dimensions are what I […]

¿Por qué y dónde python internó cadenas al ejecutar `a = ‘python’ ‘mientras el código fuente no lo muestra?

Estoy tratando de aprender el mecanismo interno de python usando en la implementación del objeto string. Pero tanto en PyObject *PyString_FromString(const char *str) como en PyObject *PyString_FromStringAndSize(const char *str, Py_ssize_t size) cadenas internadas de python solo cuando su tamaño es 0 o 1. PyObject * PyString_FromString(const char *str) { fprintf(stdout, “creating %s\n”, str);————[1] //… //creating… […]

Variables estáticas en la API de Python C

¿Cómo se expondrían variables “estáticas” como esta? class MyClass: X = 1 Y = 2 a través de la API de C? La única variable en PyTypeObject que parece que funcionaría es tp_members, pero no veo ninguna bandera en PyMemberDef para indicar que el miembro debe ser por clase, no por instancia. Para un poco […]

Importe y use el módulo estándar de Python desde dentro de la extensión Python C

Tengo un módulo de extensión de Python escrito en C. Quiero usar en este código C uno de los módulos de Python estándar, por ejemplo, os o shutil . ¿Cómo es mejor hacer esto?