tutorial que .net python ironpython dynamic-language-runtime

.net - que - ironpython virus



Iron Python: ¿cuáles son los buenos usos para Iron Python? (12)

Tengo una afinidad con python, pero trabajo en un entorno .NET, así que estaba investigando Iron Python y preguntándome para qué se usaría.

¿Podrías escribir una aplicación en ella? ¿O es para agregar un lenguaje de scripting a tu aplicación?

¿Cómo lo usan ustedes?


Creo que Resolver Systems construyó sus productos con IronPython. Así que definitivamente hay un uso real de IronPython.

También se anunció que portarán NumPy a IronPython y .Net. Esto sin duda ampliará el atractivo de IronPython.


Creo que la familia de idiomas de Iron es principalmente para agregar más sabores a la plataforma, lo que le permite ingresar a .NET utilizando un lenguaje con el que está familiarizado. Baja mucho el listón para que nuevas personas con diferentes fondos ingresen a .NET

A pesar de que la sintaxis es Python, la implementación aún se basa en el CLR y el producto final no será muy diferente si decide ir a un proyecto de IronPython en lugar de decir C #.

He tenido algo de experiencia con IronPython y me parece agradable trabajar con él (por supuesto, me ayuda mucho con el idioma). IronPython ahora es considerado un ciudadano de primera clase por parte de Microsoft, y esa es también la impresión que se obtiene al usarlo. Sin embargo, un inconveniente de su uso es que no se ha adoptado tan ampliamente como los dos idiomas principales, lo que causa algunos problemas cuando se trata de colaboración y el mantenimiento de una base de código a lo largo del tiempo.

Lo encontré particularmente útil al hacer un puerto .NET de un algoritmo de búsqueda que se implementó por primera vez en Python.

Con respecto a la adición de capacidades de scripting a su aplicación, probablemente no sea la intención original con IronPython, pero se ha hecho. El CMS de Umbraco tiene (o al menos tuvo) la capacidad de crear widgets utilizando Python como un lenguaje de scripting dinámico dentro de su plataforma. Una característica bastante buena para tener.

Debes seguir adelante y probarlo. Siempre es bueno tener más herramientas en el cinturón :)


Cualquiera o los dos :)

No pretendo saber un "propósito" específico para IronPython, pero ciertamente se puede usar para escribir aplicaciones y se puede usar para secuencias de comandos dentro de una aplicación .NET más grande.

Aparte de todo lo demás, es una forma útil de facilitar suavemente a los desarrolladores de Python al mundo de .NET. (¿Por qué no aprendes C # al mismo tiempo? Entra, el agua es encantadora ...)


El mayor beneficio de IronPython es que acerca los mundos de Python y .NET.

Si tiene bibliotecas (ensamblajes) escritas en C #, puede importarlas directamente en IronPython y usarlas, de esta manera:

import clr clr.AddReferenceToFileAndPath(''MyAssembly.dll'') import MyNamespace c = MyNamespace.MyClass() c.MyFunction()

Esto es muy bueno para reutilizar el código .NET existente al usar scripts o incluso para uso interactivo con el intérprete IronPython.

El CPython ordinario requiere que Python .NET haga las mismas cosas o cosas similares. En mi experiencia, Python .NET funciona la mayor parte del tiempo, pero no siempre, y IronPython brinda una experiencia mucho más refinada al acceder a .NET desde Python.

Es probable que IronPython siempre se retrase en la implementación de referencia de CPython en términos de soporte de biblioteca estándar, etc., pero en general el desarrollo no está tan lejos, con lo que sería difícil trabajar con un fondo de CPython.

Por último, hay algunas differences sustanciales entre CPython y IronPython, a las que hay que prestar atención. Ejemplo - recolección de basura (morderme el otro día ...).


IronPython con WPF es la forma más productiva de diseñar una GUI que yo sepa. Casi toda la aplicación que se muestra a continuación está escrita en IronPython. Solo se realizan piezas muy pequeñas en C # o C ++ / CLI por razones de rendimiento.

Claro, te pierdes algo de integración con WPF / C #, pero ganas mucho más en el lado de la productividad.

IronPython también es mucho más fácil de extender que CPython. Toma su código C ++ y solo agrega un pequeño contenedor C ++ / CLI encima de él. CPython no tiene nada que sea tan fácil como esto. Esa es la razón por la que comencé a usar IronPython, porque me cansé de escribir envoltorios para mi código C ++ en CPython. Boost.Python, SWIG y similares no funcionaron para mí.


Lo usamos como un lenguaje incorporado dentro de nuestro software. Tenía un artículo en mi blog, pero recientemente cambié a un nuevo sistema. Puede encontrar una versión archivada (con enlaces de imagen rotos) aquí:

Nuestros ingenieros de campo ahora usan el lenguaje incorporado para probar cosas sobre la marcha, nuestra gente de control de calidad lo usa para crear pequeños scripts para probar todas las características del hardware, etc.

Espero que esto ayude.


Mi experiencia con IronPython es su uso como parte del motor que se puede cambiar después de la instalación de la aplicación .Net base. Con la ayuda de Python, hemos descrito un conjunto muy amplio de reglas de negocios, que se pueden cambiar desde la instalación de dos sistemas. Parcialmente IronPython fue utilizado como lenguaje de plugin.

La diferencia con el lenguaje de script: que después de la compilación IronPython se ejecuta como código CLR.


Primero: IronPython es realmente más un compilador que un intérprete en el sentido más estricto: se usará para generar ensamblados .NET a partir de los archivos de origen de Python. Así que sí, puedes escribir aplicaciones y casi cualquier cosa que pueda hacer .NET Framework.

Uno de los mayores beneficios de IronPython es que no tiene (efectivamente) GIL , lo que significa que si ambos escriben el código Python y tienen múltiples subprocesos, a menudo puede obtener un rendimiento mejor que CPython sin tener que generar múltiples procesos y objetos de salmuera a través de los límites. No resuelve el problema de la concurrencia, pero .NET proporciona construcciones mucho más robustas para tratar con él. Creo que este es un nicho bastante honestamente, pero ciertamente está ahí.

La página wiki de python.org para IronPython enumera un grupo de diferenciadores clave:


Puede escribir una aplicación en ella, puede usarla como lenguaje de scripting en su aplicación.

Se utiliza para acceder a las bibliotecas de Python existentes y, si es necesario, escribir partes de su código en Python si un lenguaje .NET no parece lo suficientemente adecuado para ese trabajo.


Puede usarlo para cosas geniales como tener un servidor web incorporado dentro de su aplicación que puede desarrollarse con uno de los marcos web de Python disponibles. Es mucho más fácil y más fácil de desarrollar que alojar un servidor web ASP.NET dentro de su aplicación. CherryPy, por ejemplo, también viene con un servidor web incorporado que debería funcionar bien con IronPython con algunas pequeñas modificaciones.


Se usa para escribir código Python que se ejecuta en la plataforma .NET. Es bueno para cualquier cosa que Python es bueno.

El lenguaje Python es el lenguaje Python, no importa qué. IronPython es una implementación del tiempo de ejecución para ese lenguaje: el código de soporte que compila su fuente, crea una máquina virtual para ejecutar el bytecode en el archivo .pyc resultante, se comunica con el sistema operativo para poner los argumentos de la línea de comandos en sys.argv . Y todas esas otras cosas divertidas. (Bueno, está bien, la plataforma .NET en sí también hace gran parte del trabajo. :))


  • IronPython es solo otra implementación de Python. Puede usarlo en cualquier lugar que use cualquier otra implementación de Python. (Por supuesto, las restricciones de la plataforma de módulo: obviamente no se puede usar IronPython en un dispositivo solo para Java).
  • IronPython es solo otro compilador .NET. Puede usarlo en cualquier lugar que use cualquier otro lenguaje .NET.
  • IronPython es más que solo otra implementación de Python. Es una implementación de Python que le brinda acceso completo a cualquier biblioteca .NET.
  • IronPython es más que solo otro compilador .NET. Es un compilador .NET que le brinda acceso completo a cualquier biblioteca de Python.
  • IronPython es un motor de secuencias de comandos integrable para cualquier aplicación, biblioteca y marco de trabajo .NET.