Создание Автономного Exe-Файла На Ironpython

Иногда вам нужно написать небольшую программу, которая будет распространяться в виде исполняемого файла, и вы не хотите, чтобы в программе было море файлов.

Один exe и все, но в то же время хочется, чтобы его написание не занимало много времени (какой-то легкий язык).

CPython в комплекте с py2exe или cx_Freeze не дает нужного результата: много файлов и большой размер программы, хотя работает очень быстро.

Мне удалось получить хорошее решение в IronPython с помощью встроенного компилятора.

pyc .

Вам даже не нужна была IDE. Подробности под катом.



Все оказалось просто

Допустим, он у вас уже установлен ЖелезоПитон (примечание: этот метод работает в версии 2.7.2 и выше, спасибо Юралис ) .

И у вас есть следующий исходный код:

  
  
  
   

import clr clr.AddReference("System.Windows.Forms") from System.Windows.Forms import Application, Form class HabrForm(Form): def __init__(self): self.Text = 'Habr!' self.Name = 'Habr!' form = HabrForm() Application.Run(form)

Сохраните его в файл mini.py. Перейдите в папку программы из консоли и введите следующую команду:

ipy.exe C:\IronPython\Tools\Scripts\pyc.py /target:winexe /main:mini.py /standalone

Если вы установите таргет в exe, то получите консольную программу, удобную для отладки.

Вы также можете создать dll. Компилятор выведет что-то вроде этого:

Input Files: Output: mini Target: WindowApplication Platform: ILOnly Machine: I386 Threading: STA Compiling. Generating stand alone executable Embedding Microsoft.Dynamic 1.1.0.20 Embedding Microsoft.Scripting 1.1.0.20 Embedding IronPython 2.7.0.40 Embedding IronPython.Modules 2.7.0.40 Embedding IronPython.SQLite 2.7.0.40 Embedding IronPython.Wpf 2.7.0.40 Saved to mini

Эксе-шник готов! Только учтите, что в этой сборке нет стандартной библиотеки.

И это хорошо.

Вы можете собрать программу, используя только модуль clr, используя быстрые библиотеки .

NET.

Включая стандартную библиотеку

Если вам нужна стандартная библиотека, то есть 2 способа подключения.

Первый — скомпилировать всю папку Lib в одну dll и сделать AddReference. Есть готовое решение , но программа работает слишком медленно! Я пошел другим путем.

Учитывая, что в IronPython есть встроенный sys-модуль, а загрузчик модулей умеет читать модули из zip, решение стало очевидным: запаковать содержимое папки Lib (из папки IronPython) и поместить рядом с exe-файлом, добавив следующий код:

import sys sys.path.append(r'.

\Lib.zip')

Теперь вы можете импортировать другие модули, например json или urllib. Вот и все, посмотрите, как круто это выглядит:

Создание автономного exe-файла на IronPython

Теги: #python #IronPython #exe #Windows #.

NET #python

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.