SIP es una herramienta de software de código abierto que se utiliza para conectar programas de computadora o bibliotecas escritas en C o C ++ con el lenguaje de programación Python . Es una alternativa a SWIG .
Autor (es) original (es) | Phil Thompson |
---|---|
Escrito en | C , C ++ |
Licencia | GPL y otros |
Sitio web | riverbankcomputing |
SIP se desarrolló originalmente en 1998 para PyQt , los enlaces de Python para el kit de herramientas Qt GUI, pero es adecuado para generar enlaces para cualquier biblioteca C o C ++. [1]
Concepto
SIP toma un conjunto de archivos de especificación (.sip) que describen la API y genera el código C ++ requerido. Esto luego se compila para producir los módulos de extensión de Python. Un archivo .sip es básicamente el archivo de encabezado de clase con algunas cosas eliminadas (porque SIP no incluye un analizador completo de C ++) y algunas cosas agregadas (porque C ++ no siempre proporciona suficiente información sobre cómo funciona la API).
Para PyQt v4 utilizo una herramienta interna (escrita con PyQt, por supuesto) llamada metasip. Es una especie de IDE para SIP. Utiliza GCC -XML para analizar los archivos de encabezado más recientes y guarda los datos relevantes, como XML, en un proyecto de metasip. metasip luego hace el equivalente a una diferencia con la versión anterior de la API y marca cualquier cambio que deba ser analizado. Luego, esos cambios se realizan a través de la GUI y se marcan en la lista TODO. Generar los archivos .sip es solo hacer clic en un botón. En mi repositorio de subversión, PyQt v4 es básicamente un archivo XML de 20M. Actualizar PyQt v4 para una versión menor de Qt v4 es aproximadamente media hora de trabajo. En términos de cómo funciona el código generado, no creo que sea muy diferente de cómo funciona cualquier otro generador de enlaces. Python tiene una API C muy buena para escribir módulos de extensión; es una de las razones por las que tantas herramientas de terceros tienen enlaces de Python. Para cada clase de C ++, el código generado por SIP crea una clase de Python correspondiente implementada en C. [2]
Aplicaciones notables que utilizan SIP
- PyQt , un puerto de Python del marco de la aplicación y el kit de herramientas de widgets Qt
- QGIS , un sistema de información geográfica (GIS) de escritorio multiplataforma gratuito y de código abierto
- QtiPlot , un programa informático para analizar y visualizar datos científicos
- calibre , un administrador de libros electrónicos multiplataforma gratuito y de código abierto
- Veusz , un programa multiplataforma gratuito y de código abierto para visualizar datos científicos
Referencias
- ^ "Introducción - SIP" . riverbankcomputing.com . Consultado el 14 de agosto de 2010 .
- ^ "Phil Thompson habla de PyQt" . dot.kde.org. 2006 . Consultado el 13 de agosto de 2010 .