Ironpython windows console что это
IronPython: что это за программа? Установка, настройка и описание
Характеристика IronPython по сравнению с CPython
Точные характеристики производительности IronPython, если сравнивать с CPython (это эталонная реализация языка программирования Python), будут зависеть от конкретного использования конкретного синтаксиса. В целом IronPython по производительности чуть хуже, чем CPython. Это доказано большим количеством тестов, сделанных с использованием скрипта PyStone.
Установка Iron P ython
В целом установка Iron P ython — дело не хитрое. Будут небольшие различия в зависимости от того, какую операционную систему вы используете.
Установка Iron P ython в Linux
Установка Iron P ython в Linux довольно проста и умести тся в несколько простых шагов:
Установка Iron P ython MacOS
Здесь тоже все просто. Сама установка займет пару минут и всего несколько шагов:
Установка IronPython в Windows
Здесь всего 2 шага отделяет вас от программирования на этом языке:
Так что это за программа IronPython, для чего использовать?
Использовать или нет IronPyt h on — зависит только от вашего желания и необходимости конкретно в этом языке.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Перейдем непосредствено к кодированию.
Для начала, рассмотрим интерфейс тестового приложения «Notepad».
В меню «Сервис» и разместим пункт «Макросы». Для примера рассмотрим простейший вариант формирования списка макросов — в каталоге с программой создадим папку «Macroses» файлы из этой папки станут пунктами меню.
internal class MacrosToolStripMenuItem : ToolStripMenuItem
<
public MacrosToolStripMenuItem( string FileName) : base (FileName) < >
public string MacrosFileName < get ; set ; >
>
MacrosToolStripMenuItem — класс-наследник от ToolStripMenuItem отличающийся только свойством MacrosFileName
Для начала, создадим макрос, который просмотрит текст в textBox’е и найдет все e-mail адреса вида «vpupkin@mail.ru». В папке Macroses создаем файл SaveEmail.py, запускаем приложение — и смотрим, что в меню Макросы появился пункт SaveEmail.
Теперь собственно ключевой момент — выполнение IPy скрипта и доступ его к интерфейсу. Добавляем к проекту ссылку на сборку IronPython.dll. И создаем класс MacroRunner — выполняющий скрипт.
public class MacroRunner
<
public static Form CurrentForm;
public string FileName
try
<
pyEngine.ExecuteFile(FileName);
>
catch (Exception exc)
<
MessageBox.Show(exc.Message);
>
>
>
Ключевой момент — подключение к выполняющей среде IPy текущей сборки — для доступа к форме. Когда сборка подключена, в IPy скрипте появится возможность использовать классы пространства имен Notepad. Так же, через LoadAssebmly можно добавить и другие необходимые сборки — типа System.Windows.Forms — чтобы работать с формами.
Класс готов, теперь модифицируем обработчик клика на пунктах подменю Макросы
protected void macroToolStripMenuItem_Click( object sender, EventArgs e)
<
MacrosToolStripMenuItem item = sender as MacrosToolStripMenuItem;
MacroRunner runner = new MacroRunner() < FileName = item.MacrosFileName >;
MacroRunner.CurrentForm = this ;
runner.Execute();
>
Здесь следует отметить следующий момент — чтобы передать в IPy-скрипт форму, из которой собственно вызывается макрос — используется статическое поле CurrentForm. В скрипте форма будет доступна как Notepad.MacroRunner.CurrentForm. В идеале, скрипт, разумеется, не должен иметь полного доступа к интерфейсу формы — а должен пользоватся только предоставленным API — и ограничиваться только им. Но сейчас этим заморачиваться не будем — и просто сделаем textBox открытым (Modifier = Public). Ну и кроме текстового поля, разрешим скрипту доступ к пункту меню Сервис (Modifier = Public).
Работа с формой закончена, собираем проект и открываем файл SaveEmail.py — теперь работаем только с макросами.
Итак, первый макрос — SaveEmail.py:
Т.к. сборка подключена к среде выполнения — то доступно пространство имен Notepad — в котором объявлены классы приложения. Как раз сейчас потребуется статический метод класса MacroRunner — чтобы получить доступ к активной форме (еще раз оговорюсь — что правильнее было бы предоставить не прямой доступ, а через класс-посредник — которые ограничит доступ определенным API). Ну а дальше все просто — получаем текст, регулярным выражением вытаскиваем email — и сохраняем их в файл в текущем каталоге.
Можно запустить приложение, ввести произвольный текст, содежащий email — и убедиться, что после того, как макрос отработал — в папке с выполняемой программой появился файл emails.txt.
Теперь еще один пример, что может сделать макрос — чуть интереснее предыдущего. Итак, создаем в папке Macroses файл UIModifier.py. Как можно догадаться по названию — макрос будет изменять элементы интерфейса приложения. Конкретно — добавит новый пункт в меню Сервис. Для того, чтобы можно было работать с элементами управления WinForms необходимо в среде выполнения IPy подключить сборку System.Windows.Forms. Это можно сделать в момент запуска скрипта из приложения — добавить еще один вызов LoadAssembly. Но мы решили — никаких перекомпиляций, пусть IronPython обходится своими силами. Ну что ж, силы есть :). Чтобы подключить сборку используется метод AddReference класса clr.
from Notepad import *
main = MacroRunner.CurrentForm
import clr
clr.AddReference( «System.Windows.Forms» )
from System.Windows.Forms import *
def pyHello(s,e):
MessageBox.Show( «Hello from IPy!» )
item = ToolStripMenuItem()
item.Name = «pybtn»
item.Text = «Python created!»
item.Click += pyHello
Все просто — получаем текущую форму, подключаем сборку System.Windows.Forms и импортируем из пространства имен System.Windows.Forms все — пригодится.
pyHello — простенький обработчик события — при щелчке на созданном пункте меню — будет выводится сообщение.
Запускаем приложение, выполняем макрос. Смотрим пункт меню Сервис:
При щелчке на пункт меню «Python сreated!» появится стандартный MessageBox — собственно, чего и добивались.
IronPython
Для начала создадим приложение Windows Forms и добавим туда все, что требуется:
В этот раз не будем пытаться решать сложных проблем, придумаем что-нибудь простое и одновременно показывающее взаимодействие Python и C#. Пусть нам необходимо сложить 2 числа (и мы по каким-то причинам не хотим делать эту операцию обыкновенным способом «в столбик» или с помощью калькулятора). Для этого добавим на нашу форму 3 TextBox-а, пару Label-ов и один Button. Должно получиться примерно так:
В первые два текстовых поля мы будем вводить наши значения, а в третьем пусть отображается наш результат.
Определим две переменные:
Стоит отметить, что все, что будет взаимодействовать с IronPython, должно быть “public”.
Существует несколько методов для работы со скриптами в Ironpython:
Мне больше всего нравится способ ExecuteFile(), его и будем использовать. Для этого в метод инициализации формы добавим следующее:
Для того, чтобы выполнить какой-нибудь скрипт, добавим в код метода обработки кнопки следующий код:
В указанном выше коде выполняется построчно следующее:
Ну и сам Python-файл с функцией содержит код:
Проверим, как работает наш «вычислитель»:
Верно! У нас получилось написать простейшее приложение с применением этой технологии. Кажется, мы решили «детскую» задачку – написали простейший калькулятор, который умеет только складывать два числа. Но разве не с простых «детских» задач начинается изучение чего-то нового?! Лично для себя я вижу неплохую возможность в изучении с использованием уже знакомых мне инструментов. С помощью IronPython можно не только интерпретировать некоторый код, но и проводить некоторые параллели при изучении Python. К примеру, код на C#:
Будет эквивалентен следующему коду на IronPython:
Есть некоторое сходство, верно?!