Найти - Пользователи
Полная версия: IronPython и Mono
Начало » Python для .Net » IronPython и Mono
1
Artemios
Собственно, subj.
Кто-нибуть пробовал использовать под *nix, в Mono?
alafin
А какой собственно вопрос интересует? Как поставить?
Artemios
Да собственно, все интересует…
Работает ли на Mono, если да – то как поставить; есть ли какие-либо особенности в плане работы с Mono-библиотеками, отсутствующими в .NET (например GTK#) и т.д. и т.п.

К платформе вот присматриваюсь, но C# как язык – не больно-то впечатляет…
alafin
Artemios
К платформе вот присматриваюсь, но C# как язык – не больно-то впечатляет…
Синтаксис не понравился?

Многим подсказать не смогу т.к. не юзаю IronPython, но пару ссылок всегда смогу дать =)
1) IronPython on Mono howto
2) GTK# mit IronPython - Tutorium (сразу предупреждаю на немецком)
З.Ы. На русском искать, думаю, ничего не стоит т.к. у нас еще IronPython не получил достойного внимания.
Artemios
Спасибо, посмотрю.
Artemios
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 достаточно приятное.
Artemios
Ой, а как код на вашем форуме форматируется?
alafin
Artemios
Ой, а как код на вашем форуме форматируется?
Ведущий тег должен выглядеть так code:python
Artemios
Спасибо!
netch
Привет всем,

что-то мне реализация оного как минимум со стандартными питоновыми классами вызывает сильное подозрение…

вот например:

>>> sys = site.sys
>>> sys.path.append('/usr/local/lib/python2.5')
>>> import os
>>> os.open("/dev/tty", 0)
3
>>> os.open("/dev/tty", 0)
Traceback (most recent call last):
OSError: Sharing violation on path /dev/tty
>>> os.close(3)
>>> os.open("/dev/tty", 0)
Traceback (most recent call last):
OSError: Sharing violation on path /dev/tty
Или вот такое на стандартные дескрипторы:

>>> os.fstat(0)
Traceback (most recent call last):
OSError: file does not exist
такое впечатление, что ставится какая-то перехватывающая всё прослойка (кстати, по данным fstat'а этот якобы 3, вернутый из os.close(), совсем не 3)

fepy взамен не годится - мне нужны не просто сокеты, а ещё и общий select с ними и пайпами.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB