IronPython в Mono: взгляд новичка в .NET.
Оказалось все очень просто, даже устанавливать ничего не надо:
качаем архив с бинарниками IronPython, распаковываем, кроме прочего видим ipy.exe.
В консоли набираем: mono ipy.exe и вуаля, приглашение интерпретатора Python-а от Microsoft в линуксовой консоли :) Конечно можно раскидать по стандартным директориям, пути прописать, но это уже дело третее…
Естественно, Mono уже должно присутствовать.
Естественно, ничего кроме питоновского синтаксиса и доступа к .NET/Mono классам/библиотекам.
Одни люди советуют в site.py прописать пути до стандартных библиотек Python2.4 (CPython).
Конечно, что не pure python – не запустим. Другие люди постарались, и реализовали некоторое подмножество набора стандартных модулей Питона – проект FePy (
http://fepy.sourceforge.net/).Внешне такой модуль предоставляет знакомый и привычный интерфейс, внутри – организована работа с .NET классами.
Далее. Что тут у нас с GUI-интерфейсом?… Разработчики Mono по-видимому не любят WinForms и не спешат с их полной поддержкой (хотя некоторые формочки и под Mono работают); а потому здесь свой стандарт – GTK#. С другой стороны, разработчики Mono предоставляют свои библиотеки (в т.ч. GTK#) и для NET Framework под Windows.
Вот такой мой Hello world на Python-е (писал, глядя на немецкий вариант из ссылки alafin):
import clr
clr.AddReference(“gtk-sharp”)
import Gtk
class HelloWorld:
def hello(self, widget, data=None):
print “Hello World!”
def delete_event(self, widget, data=None):
Gtk.Application.Quit()
def __init__(self):
self.window = Gtk.Window(“Hello World!”)
self.window.DeleteEvent += self.delete_event
self.window.BorderWidth = 10
self.button = Gtk.Button(“Hello World!”)
self.button.Clicked += self.hello
self.window.Add(self.button)
def Show(self):
self.window.ShowAll()
if __name__ == “__main__”:
Gtk.Application.Init()
hi = HelloWorld()
hi.Show()
Gtk.Application.Run()
Конечно, не очень похоже на работу с pyGTK, но почти один-в-один как на C#.
Эх, жаль Qt 4.x еще к дотнету не привязали…
Порадовала ситуация со standalone:
вместо mono /path-to-IronPython/ipy.exe /path-to-my-program/myprogram.py
командую: mono /path-to-IronPython/ipy.exe -X:SaveAssemblies /path-to-my-program/myprogram.py
и получаю готовый “бинарник” myprogram.exe, запускаемый в Mono уже без ipy.exe.
Экзешник тянет за собой 2 dll-ки : IronPython.dll и IronMath.dll (если не считать самой .NET) и одинаково запускается на разных системах (пробовал в 32-битном и 64-битном линуксе, для win качаю сейчас Mono, но думаю и там будет все успешно)
В общем, впечатление от IronPython достаточно приятное.