IronPython

Implementierung der Programmiersprache Python für die Common-Language-Infrastructure
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. April 2018 um 01:26 Uhr durch 178.195.104.72 (Diskussion) (Tippfehler korrigiert). Sie kann sich erheblich von der aktuellen Version unterscheiden.

IronPython ist eine Implementierung der Programmiersprache Python für die Common Language Infrastructure (CLI) bzw. damit kompatible Laufzeitumgebungen wie z. B. Mono.

IronPython
Basisdaten
Erscheinungsjahr: 2006
Designer: Jim Hugunin
Entwickler: Jim Hugunin, Microsoft
Aktuelle Version: 2.7.7[1]  (11. Dezember 2016)
Betriebssystem: Plattformunabhängig
Lizenz: Apache-Lizenz 2.0
ironpython.net

IronPython ist vollständig in C# geschrieben und wird im Rahmen der Apache-Lizenz 2.0 bereitgestellt. IronPython ist im Sprachumfang kompatibel zu CPython 2.7, wird aber ohne die Python-Standard-Bibliothek (siehe Weblinks) ausgeliefert. Es lassen sich jedoch sämtliche Module einer CPython-Installation laden, solange diese keine kompilierte Bibliotheken benötigen. Zugriff auf .NET-Assemblies ist uneingeschränkt möglich.

In IronPython erstellte Programme lassen sich sowohl interpretieren als auch just-in-time in ausführbare Dateien übersetzen. Wie in .NET üblich, kann man mit IronPython auf Bibliotheken zugreifen, die in anderen .NET-Sprachen geschrieben wurden, ebenso wie diese mit Einschränkungen auf in IronPython geschriebene Bibliotheken zugreifen können.

Die IronPython-Umgebung kann als eine Skriptsprache zum Automatisieren einer .NET-Anwendung genutzt werden. Dabei wird die Laufzeitumgebung in die .NET-Anwendung eingebunden. Es können beliebige Objekte an das Skript übergeben werden, was z. B. für Spieleerweiterungen oder Plug-in-Entwicklungen sinnvoll ist.

Beispiele

Eine Ausgabe ohne .NET-Bibliothek:

print "Hallo Welt!"

Das gleiche Beispiel, diesmal mit einer „internen“ .NET-Bibliothek:

from System import Console

Console.WriteLine("Hallo Welt!")

Und einmal mit Hilfe einer „externen“ .NET-Bibliothek, wobei die MyLib.dll in einer beliebigen anderen .NET-Sprache (z. B. C#, Visual Basic .NET oder C++/CLI) geschrieben sein kann:

import clr
clr.AddReferenceToFile("MyLib.dll")
from MyLib import Out

Out.Print("Hallo Welt!")

IronPython in C# einbinden (z. B. als Taschenrechner):

using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

public class Eval
{
    public static void Main(string[] args)
    {
        ScriptEngine se = Python.CreateEngine();
        Console.WriteLine(se.Execute(args[0]));
    }
}

Angenommen das C#-Programm liegt als eval.exe kompiliert vor und die IronPython-Laufzeitbibliotheken IronPython.dll und IronMath.dll (z. B. in demselben Verzeichnis) sind vorhanden, können beliebige Python-Ausdrücke ausgewertet werden:

 C:\> eval.exe 2+2
 4

 C:\> eval.exe 2**3
 8

 C:\> eval.exe 5%3
 2

In einem Tutorial, das mit dem IronPython-Paket mitgeliefert wird, ist ein Beispiel zu sehen, wie IronPython als Skriptsprache für C# benutzt werden kann.

Siehe auch

  • Python, die Programmiersprache Python
  • Jython, Java-Implementierung der Programmiersprache Python
  • PyPy, Implementierung der Programmiersprache Python in Python selbst
  • Boo, Implementierung der Python-ähnlichen Programmiersprache Boo für .NET

Einzelnachweise

  1. IronPython 2.7.7