Iron python windows console что это

IronPython: что это за программа? Установка, настройка и описание

IronPython — это своего рода реплика языка программирования Python, а точнее , его реализация, которая тесно связана с .NET Framework. IronPython использует библиотеки .NET Framework и библиотеки Python. В целом это отличное дополнение к .NET, позволяющее веб-разработчикам «Питона» пользоваться возможностями .NET Framework. Это очень быстрый и выразительный способ программирования для выстраивания сценариев, тестирования и написания приложений с нуля.

Реализация IronPython происходит прямо поверх библиотек Dynamic Language Runtime (DLR), работающих поверх Common Language Infrastructure, которая , в свою очередь , отвечает за обеспеч ение динамической типизации, а также за отправку необходимых методов для используемого динамического языка.

DLR — это существенная часть .NET Framework 4.0 и Mono. Это стало возможным , уже начиная с релиза 2.4 2009 года. DLR также часто используется в качестве библиотек в наиболее « древних » реализациях CLI.

Характеристика IronPython по сравнению с CPython

Точные характеристики производительности IronPython, если сравнивать с CPython (это эталонная реализация языка программирования Python), будут зависеть от конкретного использования конкретного синтаксиса. В целом IronPython по производительности чуть хуже, чем CPython. Это доказано большим количеством тестов, сделанных с использованием скрипта PyStone.

IronPython в принципе может повысить свою производительность в программах на языке Python, которые используют потоки в несколько ядер , п отому что он сам использует JIT и не имеет Global Interpreter Lock (GIL) механизма. Этот механизм в основном используется в некоторых интерпретаторах программного языка, чтобы синхронизировать выполнение потоков. Интерпретатор, который использует GIL, всегда может выполнить только один поток за раз, даже если поток данных выполняется на многоядерном процессоре. Н екоторые популярные интерпретаторы с GIL — это CPython и Ruby MRI.

Установка Iron P ython

В целом установка Iron P ython — дело не хитрое. Будут небольшие различия в зависимости от того, какую операционную систему вы используете.

Установка Iron P ython в Linux

Установка Iron P ython в Linux довольно проста и умести тся в несколько простых шагов:

  1. Нужно добавить репозиторий Mono в вашу систему; для этого посетите сайт mono-project.com и выберете версию сво ей операционной системы.
  2. Установите Mono; это можно сделать в магазине приложений или в терминале , набрав: «$ sudo apt install mono-devel»;
  3. Установите Numerics; это также можно сделать через терминал: «$ sudo apt install libmono-system-numerics4.0-cil»;
  4. Наслаждайтесь работой, если все сделали правильно.

Установка Iron P ython MacOS

Здесь тоже все просто. Сама установка займет пару минут и всего несколько шагов:

  1. Перейдите на сайт mono-project.com и загрузите и установите последнюю версию Mono;
  2. Загрузите последнюю версию IronPython. Найдите ее через поиск, но , как правило , загрузка происходит из github.com;
  3. Откройте терминал и введите команду «$ which ipy»;
  4. Пользуйтесь и наслаждайтесь работой.

Установка IronPython в Windows

Здесь всего 2 шага отделяет вас от программирования на этом языке:

  1. Найдите и установите через поиск IronPython; как правило , скачать его можно с сайта github.com;
  2. Пользуйтесь и наслаждайтесь программированием .

Так что это за программа IronPython, для чего использовать?

Программа IronPython — это динамический язык. А как известно , динамические языки очень удобны, если необходимо, к примеру, быстро разработать приложение. Быстрая разработка — это , соответственно , быстрый результат , п оэтому современные разработчики все больше и больше отдают предпочтение именно динамическим языкам, так как они избавляют от старых методик и рутины, а значит , позволяют сосредоточит ь ся на творческой составляющей своего проекта.

Использовать или нет IronPyt h on — зависит только от вашего желания и необходимости конкретно в этом языке.

Если вам понравилась эта статья поделитесь ею с друзьями, тем самым вы помогаете нам развиваться и добавлять всё больше интересного и полезного контента!

IronPython

Python Programming Language Interpreter

IronPython — одна из основных реализаций языка Python, предназначенная для платформы Microsoft .NET или Mono. Полностью написан на C#, и является транслятором компилирующего типа.

Читайте также:  Что такое линукс как пользоваться

В IronPython можно использовать типы .NET. Также можно из .NET кода использовать IronPython код, посредством хостинга IronPython системы или предварительной сборки IronPython кода.

Содержание

Пример: программа Hello World

Простейший пример использования графического инструмента GTK+ в окружении IronPython:

Примечания

См. также

Ссылки

Boa Constructor • Eclipse+PyDev • Eric • Geany • IDLE • Komodo • NetBeans • PyCharm • PyScripter • SPE

Python
Люди
.NET Framework
Архитектура Base Class Library • Common Language Infrastructure • .NET assembly • метаданные • COM Interop
Инфраструктура Common Language Runtime • Common Type System • Common Intermediate Language • Virtual Execution System • Dynamic Language Runtime
Языки Microsoft C# • Cω • Visual Basic .NET • C++/CLI (Managed) • Visual J# • JScript .NET • Windows PowerShell • IronPython • IronRuby • F# • Spec# • Sing#
Другие языки A# • Boo • IronLisp • L# • Nemerle • P# • PascalABC.NET • PHP • Scala • Cobra • Delphi Prism
Windows Foundations Presentation • Communication • Workflow
Компоненты ADO.NET (Entity Framework · Data Services) · ASP.NET (AJAX · MVC · Dynamic Data) · .NET Remoting · Language Integrated Query · Windows CardSpace · Windows Forms · XAML · ClickOnce · Dynamic Language Runtime · Parallel FX Library (PLINQ · TPL)
Реализации DotGNU • Mono • .NET Compact Framework (Xbox 360) • .NET Micro Framework • Portable.NET • XNA Framework • Silverlight • Shared Source Common Language Infrastructure
Сравнения C# и Java • C# и Visual Basic .NET
Будущие технологии Acropolis • Jasper

Wikimedia Foundation . 2010 .

Смотреть что такое «IronPython» в других словарях:

IronPython — Erscheinungsjahr: 2006 Entwickler: Jim Hugunin, Microsoft Aktuelle Version: 2.7.0[1] (12. März 2011) Betriebssystem … Deutsch Wikipedia

IronPython — IronPython(It Run On Net) est une implémentation du langage Python, visant .NET et Mono, créée par Jim Hugunin. La version 1.0 est sortie le 5 septembre 2006. IronPython est écrit entièrement en C#. Il est disponible comme partie de l initiative… … Wikipédia en Français

IronPython — Desarrollador(es) Jim Hugunin www.codeplex.com/IronPython Información general Paradigma multiparadigma: orientado a objeto … Wikipedia Español

IronPython — Infobox Software name = IronPython caption = developer = Jim Hugunin latest release version = 1.1.2 latest release date = August 8, 2008 latest preview version = 2.0 Beta 4 latest preview date = August 6, 2008 operating system = platform = .NET… … Wikipedia

Dynamic Language Runtime — Developer(s) Microsoft Dynamic Language Runtime Team Stable release 1.0 / April 16, 2010 Operating system Microsoft Windows, Debian, Ubuntu Platform … Wikipedia

Python — У этого термина существуют и другие значения, см. Python (значения). Python Класс языка: му … Википедия

Пайтон — Python Класс языка: функциональный, объектно ориентированный, императивный, аспектно ориентированный Тип исполнения: интерпретация байт кода, компиляция в MSIL, компиляция в байт код Java Появился в: 1990 г … Википедия

Visual Basic .NET — Paradigm(s) Structured, imperative, object oriented and declarative Appeared in 2001 Designed by Micro … Wikipedia

SharpDevelop — Bildschirmfoto der Version 2.0 Basisdaten Entwickler IC#Code Aktuelle Version … Deutsch Wikipedia

Dynamic Language Runtime — La DLR est une surcouche facilitant l implémentation et l interopérabilité des langages dynamiques. La DLR permet de supporter plusieurs langages. Cette technologie est utilisé par Microsoft pour la plateforme .NET et Sun pour son langage java.… … Wikipédia en Français

IronPython

Сегодня поговорим об интересном проекте IronPython. Описание звучит так: «IronPython — это реализация языка программирования Python с открытым исходным кодом, которая тесно интегрирована с .NET Framework. IronPython может использовать библиотеки .NET Framework и Python, а другие языки .NET могут также легко использовать код Python».

Для начала установим все необходимое. Для работы с данным проектом нам понадобиться Visual Studio(я использую 2019, .Net Framework необходим не ниже 4.5, .Net Core 2.0 или 2.1). Установить можно через менеджер Nuget Install-Package IronPython Install-Package IronPython.StdLib. Текущая, на момент написания статьи, версия – 2.7.10.

Для начала создадим приложение Windows Forms и добавим туда все, что требуется:

В этот раз не будем пытаться решать сложных проблем, придумаем что-нибудь простое и одновременно показывающее взаимодействие Python и C#. Пусть нам необходимо сложить 2 числа (и мы по каким-то причинам не хотим делать эту операцию обыкновенным способом «в столбик» или с помощью калькулятора). Для этого добавим на нашу форму 3 TextBox-а, пару Label-ов и один Button. Должно получиться примерно так:

Читайте также:  Windows hello не работает после обновления

В первые два текстовых поля мы будем вводить наши значения, а в третьем пусть отображается наш результат.

Определим две переменные:

Стоит отметить, что все, что будет взаимодействовать с IronPython, должно быть “public”.

Существует несколько методов для работы со скриптами в Ironpython:

Мне больше всего нравится способ ExecuteFile(), его и будем использовать. Для этого в метод инициализации формы добавим следующее:

Для того, чтобы выполнить какой-нибудь скрипт, добавим в код метода обработки кнопки следующий код:

В указанном выше коде выполняется построчно следующее:

  1. Исполняется файл по указанному адресу, в котором определена функция
  2. Функция из Python определяется в C#
  3. Вычисляется значение функции с учетом введенных значений
  4. В текстовое поле, предполагавшееся для ответа, записывается результат арифметической операциилибо ошибка, которая возникла при выполнении.

Ну и сам Python-файл с функцией содержит код:

Проверим, как работает наш «вычислитель»:

Верно! У нас получилось написать простейшее приложение с применением этой технологии. Кажется, мы решили «детскую» задачку – написали простейший калькулятор, который умеет только складывать два числа. Но разве не с простых «детских» задач начинается изучение чего-то нового?! Лично для себя я вижу неплохую возможность в изучении с использованием уже знакомых мне инструментов. С помощью IronPython можно не только интерпретировать некоторый код, но и проводить некоторые параллели при изучении Python. К примеру, код на C#:

Будет эквивалентен следующему коду на IronPython:

Есть некоторое сходство, верно?!

Если в течение какого-то продолжительного времени вы писали .Net приложения традиционным способом (запись, компиляция, тестирование, исправление, перекомпиляция, повторное тестирование, все сначала) и по каким-то причинам столкнулись с необходимостью работы со скриптами (даже необязательно для анализа данных), то IronPython может стать своеобразным «мостом» для перехода к написанию скриптов Python и подарит возможность взглянуть на некоторые вещи под иным углом.

IronPython как движок для макросов в .NET приложениях

Подозреваю, многие из вас задумывались — как можно в .NET приложение добавить поддержку макросов — чтобы можно было расширять возможности программы без ее перекомпиляции и предоставить сторонним разработчикам возможность легко и просто получить доступ к API вашего приложения? В статье рассмотрено, как в качестве основы для выполнения макросов использовать IronPython — реализацию языка Python на платформе .NET.

Для начала, следует определится — что мы будем иметь в виду под словом «макрос» — это скрипт, который без перекомпиляции проекта позволял бы получить доступ к определенному API. Т.е. вытаскивать значения с формы, модифицировать их — и все это в режиме run-time, без модификации приложения.

Первым вариантом, который приходит на ум будет создание собственного интерпретатора для простенького скрипт-языка. Вторым — будет динамическая компиляция какого-нибудь .NET языка (того же C#) — с динамической же подгрузкой сборок и выполнением через Reflection. И третий — использование интерпретируемых .NET языков (DLR) — IronPython или IronRuby.

Создавать свой язык + интерпретор к нему с возможностью .NET interoperability — задача нетривиальная, оставим ее для энтузиастов.
Динамическая компиляция — слишком громоздко и тащит за собой использование Reflection. Однако, этот метод не лишен преимуществ — написанный макрос компилируется единожды и в дальшейшем может использоватся многократно — в виде полноценной .NET сборки. Итак — финалист — метод номер три — использование существующих DLR языков. В качестве такого языка выбираем IronPython (примите это как факт :). Текущая версия IPy — 2.0, взять можно на codeplex.com/IronPython

Перейдем непосредствено к кодированию.
Для начала, рассмотрим интерфейс тестового приложения «Notepad».


В меню «Сервис» и разместим пункт «Макросы». Для примера рассмотрим простейший вариант формирования списка макросов — в каталоге с программой создадим папку «Macroses» файлы из этой папки станут пунктами меню.

private void Main_Load( object sender, EventArgs e)
<
MacrosToolStripMenuItem itm = null ;
string [] files = Directory .GetFiles( @».\Macroses» );
foreach ( string file in files)
<
itm = new MacrosToolStripMenuItem(Path.GetFileNameWithoutExtension(file)) < MacrosFileName = file >;
itm.Click += new EventHandler(macroToolStripMenuItem_Click);
макросыToolStripMenuItem.DropDownItems.Add(itm);
>
>

internal class MacrosToolStripMenuItem : ToolStripMenuItem
<
public MacrosToolStripMenuItem( string FileName) : base (FileName) < >
public string MacrosFileName < get ; set ; >
>

* This source code was highlighted with Source Code Highlighter .

Читайте также:  Windows 10 как найти документ word по содержимому

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

public void Execute()
<
// собственно среда выполнения Python-скрипта
IronPython.Hosting.PythonEngine pyEngine = new IronPython.Hosting.PythonEngine();
// важный момент — к среде выполнения подключаем текушую выполняемую сборку, т.к.
// в ней собственно и объявлена форма, к которой необходимо получит доступ
pyEngine.LoadAssembly(System.Reflection. Assembly .GetExecutingAssembly());

try
<
pyEngine.ExecuteFile(FileName);
>
catch (Exception exc)
<
MessageBox.Show(exc.Message);
>
>
>

* This source code was highlighted with Source Code Highlighter .

Ключевой момент — подключение к выполняющей среде 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();
>

* This source code was highlighted with Source Code Highlighter .

Здесь следует отметить следующий момент — чтобы передать в IPy-скрипт форму, из которой собственно вызывается макрос — используется статическое поле CurrentForm. В скрипте форма будет доступна как Notepad.MacroRunner.CurrentForm. В идеале, скрипт, разумеется, не должен иметь полного доступа к интерфейсу формы — а должен пользоватся только предоставленным API — и ограничиваться только им. Но сейчас этим заморачиваться не будем — и просто сделаем textBox открытым (Modifier = Public). Ну и кроме текстового поля, разрешим скрипту доступ к пункту меню Сервис (Modifier = Public).

Работа с формой закончена, собираем проект и открываем файл SaveEmail.py — теперь работаем только с макросами.

Итак, первый макрос — SaveEmail.py:

text = MacroRunner.CurrentForm.textBox.Text
links = re.findall( «\w*@\w*\.\w<2,4>» , text)
file = open( «emails.txt» , «w» )
file.write( «\n» .join(links))
file.close()

* This source code was highlighted with Source Code Highlighter .

Т.к. сборка подключена к среде выполнения — то доступно пространство имен 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

* This source code was highlighted with Source Code Highlighter .

Все просто — получаем текущую форму, подключаем сборку System.Windows.Forms и импортируем из пространства имен System.Windows.Forms все — пригодится.
pyHello — простенький обработчик события — при щелчке на созданном пункте меню — будет выводится сообщение.

Запускаем приложение, выполняем макрос. Смотрим пункт меню Сервис:


При щелчке на пункт меню «Python сreated!» появится стандартный MessageBox — собственно, чего и добивались.

Оцените статью