Quiero llamar a una biblioteca C desde una aplicación Python. No quiero ajustar toda la API, solo las funciones y los tipos de datos que son relevantes para mi caso. Tal como lo veo, tengo tres opciones:
- Cree un módulo de extensión real en C. Probablemente exagere, y también me gustaría evitar la sobrecarga de aprender a escribir la extensión.
- Use Cython para exponer las partes relevantes de la biblioteca C a Python.
- Haga todo en Python, utilizando
ctypes
para comunicarse con la biblioteca externa.
No estoy seguro de si 2) o 3) es la mejor opción. La ventaja de 3) es que ctypes
es parte de la biblioteca estándar, y el código resultante sería Python puro, aunque no estoy seguro de cuán grande es realmente esa ventaja.
¿Hay más ventajas / desventajas con cualquiera de las dos opciones? ¿Qué enfoque me recomiendan?
Editar: Gracias por todas sus respuestas, proporcionan un buen recurso para cualquiera que quiera hacer algo similar. La decisión, por supuesto, aún debe tomarse para el caso único: no hay una respuesta de "Esto es lo correcto". Para mi propio caso, probablemente usaré ctypes, pero también estoy ansioso por probar Cython en algún otro proyecto.
Al no existir una única respuesta verdadera, aceptar una es algo arbitrario; Elegí la respuesta de FogleBird, ya que proporciona una buena idea de los tipos y actualmente es la respuesta más votada. Sin embargo, sugiero leer todas las respuestas para obtener una buena visión general.
Gracias de nuevo.