Найти - Пользователи
Полная версия: vanished
Начало » Python для .Net » vanished
1 2 3 4 5 6
The gray Cardinal
igor.kaist
Python for .NET, насколько я понял, служит для интеграции net и питона. То есть в своем скрипте на питоне ты сможешь использовать возможности платформы NET (типа как используется win api)
Да, но где тогда, простите, setup.py? :) Если это “обычный” модуль Python, как его заюзать? В архиве есть “helloform.py”, и там в начале вот такое грязное ругательство:
import System.Windows.Forms as WinForms
Шо це таке? Я конечно понимаю, что System.Windows.Forms — это пространство имён дотнета. Но это уже не похоже на язык Python, вот в чём дело.
The gray Cardinal
igor.kaist
Ну так интерпретирует то байт код платформа .NET
Вопрос в том, обязан ли я собирать каждый раз exe-шник. (Например, в Boo — не обязан.) Кто там чего интерпретирует, по барабану, в данном контексте.
NightmareZ
В IronPython интерпретатор есть. Исполнимый файл его называется ipy.exe
У меня, например, он завалялся по такому пути: C:\Program Files\IronPython 2.0\ipy.exe
С ним можно работать в интерактивном режиме.

Есть ipyw.exe
Ему мы можем передать путь к скрипту и данный скрипт будет выполнен. При этом не выскочит консоль.

Есть и компилятор, который генерирует обычную .net-сборку, как C# и Visual Basic. Убедиться в этом (что это обычная сборка) можно с помощью рефлектора.

Единственное отличие при компиляции питона от, например, C# в том, что недостаточно конечному пользователю поставить .NET Framework, а нужно с исполнимым файлом (или библиотекой классов) поставлять ещё пару DLL (IronPython.dll, IronMath.dll …)

The gray Cardinal
Вопрос в том, обязан ли я собирать каждый раз exe-шник. (Например, в Boo — не обязан.) Кто там чего интерпретирует, по барабану, в данном контексте.
Нет, не обязан.

igor.kaist
Ну так интерпретирует то байт код платформа .NET
И этот байт код одинаков, независимо от того, на каком языке была написана программа
Скажем так,
можно скомпилировать код IronPython'а в байт-код .NET'а (называемый также MSIL или CIL) и потом выполнять его под управлением .NET Framework,
а можно запустить интерпретатор IronPython'а (работающий тоже под .NET Framework) и этот интерпретатор будет интерпретировать непосредственно питоновский код (без компиляции в CIL).
The gray Cardinal
Спасибо, один из вопросов снят :).
NightmareZ
The gray Cardinal
2. Можно ли в IronPython установить и использовать модули “обычного” Python? И имеет ли смысл вообще подобная постановка вопроса?
Только что взял парочку не очень монстроподобных модулей с python.org и попробывал их ставить. Поставился только один (registry 0.3.0 / прибабах для работы с виндовым реестром)…. но и он стабильно не стал работать, а крашился то на одном, то на другом.

Мой оптимистичный вердикт таков: ставить можно, а вот будут ли работать - это как повезёт.
The gray Cardinal
NightmareZ
Мой оптимистичный вердикт таков: ставить можно, а вот будут ли работать - это как повезёт.
Да уж, оптимистично :lol:. Вот по этой ссылке есть раздел “Extension Modules” (это информация по старой версии IronPython, а по новой версии разработчики выложить такую инфу не удосужились). Судя по этой информации, поддержка модулей вроде как есть, но список проблем слишком велик. Т.е. о многочисленных существующих модулях Python, получается, следует забыть, реально можно работать только с дотнетом. В общем, невесело: IronPython — это не Python.

Возможно, тогда уж лучше использовать Boo.
The gray Cardinal
Вот здесь:
Андрей Светлов
Почти год интенсивно использую python.net
После него не вполне понятно, зачем мне нужен IronPython.
Заметьте, Питон от него - стандартный, C Extestions работают отлично и т.д.
Понять бы, что значит “Питон от него - стандартный”. Жду ответа, как соловей лета :)…
george
уточняю:
модули для стандартного питона работать под .net в принципе смогут, когда кто-нить сделать полный порт стандартных библиотек питона под .net.
наверное частично это сделано, но.. ironpython предназначен для работы с .net библитеками, которые ессно сильно отличаются от питоновских.
компилятора там нет, в том смысле, что классы ironpython не могут быть в принципе скомпилированы как .net классы (в отличие от boo), по той же причине,
почему на основе python кода нельзя автоматически сгенерировать С++ классы.
то что выдает тот ‘компилятор’ - это все равно интерпретируемый (медленный) код, поэтому это транслятор в байт-код, который выполняется .net машиной не напрямую,
а через IronPython.dll, DLR, …

>> интерпретатор Boo получает в командной строке текстовый файл скрипта и исполняет его.
это да, только он предварительно любой скрипт компилирует в реальный код, и потом только его исполняет.

>>Возможно, тогда уж лучше использовать Boo.
во много раз лучше.
The gray Cardinal
george
Спасибо, понятно.
Получается, что IronPython — это морская свинка, которая не имеет отношения ни к морю, ни к свиньям. Все модули для стандартного Python, которые и составляют реальную мощь языка, там практически бесполезны (не запустятся вовсе или будут преподносить глюки), а как дотнетовский язык IronPython безобразен — его нельзя скомпилировать так же, как полноценные дотнетовские языки, и он будет всегда медленнее чуть ли не на порядок.

Осталось понять, что из себя представляет “Python for .NET” :).
george
Python for .NET это модуль стандарного C-Python, позволяющий вызывать функции .net - библиотек. К примеру в .net есть pear-2-pear модуль (а-ля Napster), в Python нет,
вот можешь написать скрипт для обычного питона, который ее подымет и включит.
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