понедельник, 5 сентября 2011 г.

Исполняемый exe файл в Python3

  Иногда возникает необходимость выполнять скрипт на пользовательских машинах по windows, но без установки интерпретатора python. Это могут быть самые разнообразные ситуации, но сводиться они к созданию исполняемого exe файла. В python2 для этой цели служит инструмент под названием py2exe, но, к сожалению, python3 он не поддерживает. Поэтому для создания исполняемого exe файла в python3 мы воспользуемся cx_Freeze.
  Итак, начнем.
1) Скачиваем и устанавливаем cx_Freeze. В папке с Python появиться файл cxfreeze.bat - это основной рабочий файл cx_Freeze (У меня находиться в C:\Python32\Scripts\cxfreeze.bat)
2) Создаем две папки C:\Python32\Scripts\src
                                                    и
                                     C:\Python32\Scripts\dst
   для исходных и результирующих файлов.
3) Помещаем питон скрипт который мы хотим сделать exe файлом в папку C:\Python32\Scripts\src
4) Создаем файл run.bat (C:\Python32\Scripts\run.but) с следующим содержимым:

cd .
del dist\*.* /Q
call cxfreeze src\hello.py --target-dir dist
pause

  Данный скрипт в текущей директории удаляет из папки dist все файлы, вызывает cxfreeze, и указывает откуда брать исходный файл, и куда помещать результат. Вот мы и имеем исполняемый файл под python3.))
  Но есть одно "НО". Помимо самого exe файла, в папке будут некоторые необходимые для его функционирования файлы и библиотеки. Это несколько не то что мы ожидали (по крайней мере, я в свое время))))
  Здесь нам на помощь приходит утилита от windows под названием iexpress, которая  позволяет создавать исполняемые самораспаковывающиеся архивы (C:\WINDOWS\system32\iexpress.exe).
  Запускаем утилиту. Первое окошко спрашивает, хотим ли мы создать новый или модифицировать старый архив - выбираем новый (точнее просто нажимаем далее), в следующем окошке тоже нажимаем далее (выбор типа архива), в следующем окне вписываем строчку которая будет отображаться в процессе распаковки(при желании), в следующем окне тоже далее (окно подтверждения установки), далее тоже далее (лицензионное соглашение), в следующем окне добавляем файлы которые были созданы (из папки dist). Следующее окно предлагает указать программу которая будет запущена после распаковки архива - из выпадающего списка выбираем наш exe файл hello.exe. В следующем окне выбираем далее (размер окна), в следующем по желанию вписываем сообщение, выводимое после распаковки. В следующем  окне выбираем папку, куда поместить наш самораспаковывающийся архив с присвоением ему имени. Далее появляется окно с запросом о необходимости перезагрузки системы после выполнения - выбираем no restart, следующее окно спрашивает куда, если надо, поместить конфиг файл - выбираем don't save.
  В результате всех действий имеем один исполняемый файл.

и опять P.S. )))
Если случилось так, что Вам эта статья помогла,  или вдруг возникло непреодолимое желание сделать что либо хорошее, можете присмотреться к рекламным объявлениям на этой страничке, и просмотреть особо понравившееся. )))

P.P.S
Столько просьб у любимой всегда!
У разлюбленной просьб не бывает.
                                    (А. Ахматова)
P.P.P.S
Статья написана по мотивам 

4 комментария:

  1. после установки нету никаких cxfreeze.bat, только просто cxfreeze

    и ничего не работает

    ОтветитьУдалить
  2. Спасибо, помогло!
    Но Ахматову я не понял.

    ОтветитьУдалить
  3. Спасибо, получилось. Я новичок и потому возможно глупый вопрос: при запуске открываются 2 окна,одно питоновское, другое рабочая программа. Так и должно быть?

    ОтветитьУдалить
  4. cx_freeze создает помимо файлов еще и каталоги. iexpress каталоги не жрет. Что делать?)

    ОтветитьУдалить