Иногда вам нужно написать небольшую программу, которая будет распространяться в виде исполняемого файла, и вы не хотите, чтобы в программе было море файлов.
Один exe и все, но в то же время хочется, чтобы его написание не занимало много времени (какой-то легкий язык).
CPython в комплекте с py2exe или cx_Freeze не дает нужного результата: много файлов и большой размер программы, хотя работает очень быстро.
Мне удалось получить хорошее решение в IronPython с помощью встроенного компилятора.
pyc .
Вам даже не нужна была IDE. Подробности под катом.
Все оказалось просто
Допустим, он у вас уже установлен ЖелезоПитон (примечание: этот метод работает в версии 2.7.2 и выше, спасибо Юралис ) .И у вас есть следующий исходный код:
Сохраните его в файл mini.py. Перейдите в папку программы из консоли и введите следующую команду: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)
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.
Вот и все, посмотрите, как круто это выглядит:
Теги: #python #IronPython #exe #Windows #.
NET #python
-
Новый Игровой Ноутбук Maingear Ex-L 17
19 Oct, 24 -
Солнечные Часы
19 Oct, 24 -
World Of Warcraft Делает Золотое Руководство
19 Oct, 24 -
Знакомство С Javassist
19 Oct, 24 -
Программируем Ssram На Плис
19 Oct, 24 -
Интернет-Интервью Гришина
19 Oct, 24