Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Создание exe-файлов из скриптов на Python

Создание exe-файлов из скриптов на Python

Евгений Ильин @ MoscowPython Meetup 48
"Я расскажу, как создавать исполняемые файлы (exe) с помощью библиотек cx_Freeze и PyInstaller из скриптов на языке Python".
Видео: http://www.moscowpython.ru/meetup/48/exe-files-on-python/

Moscow Python Meetup
PRO

August 26, 2017
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. 1
    Евгений Ильин
    Создание exe-шников
    из скриптов на Python

    View Slide

  2. 2
    Зачем создавать
    запускаемые файлы

    View Slide

  3. 3
    Инструменты для создания
    запускаемых файлов
    cx_Freeze / PyInstaller / py2exe

    View Slide

  4. 4
    cx_Freeze

    View Slide

  5. 5
    cx_Freeze. Установка
    pip install cx_freeze
    или
    pip install --user cx_freeze

    View Slide

  6. 6
    cx_Freeze.
    Первая сборка

    View Slide

  7. 7
    Простейший скрипт для опытов
    example.py

    View Slide

  8. 8
    Скрипт сборки setup.py

    View Slide

  9. 9
    Запуск сборки
    python setup.py build

    View Slide

  10. 10
    Процесс сборки

    View Slide

  11. 11
    Результат сборки
    (размер сборки 9.05 МБ)

    View Slide

  12. 12
    Результат сборки.
    python36.zip

    View Slide

  13. 13
    Результат сборки.
    python36.zip

    View Slide

  14. 14
    cx_Freeze.
    Улучшаем сборку

    View Slide

  15. 15
    Скрипт сборки setup.py

    View Slide

  16. 16
    Результат сборки
    (размер сборки 5.93 МБ)

    View Slide

  17. 17
    Убираем еще больше модулей

    View Slide

  18. 18
    Результат сборки
    (размер сборки 3.7 МБ)

    View Slide

  19. 19
    Результат сборки.
    python36.zip

    View Slide

  20. 20
    Добавляем архивы в архив
    pythonXX.zip

    View Slide

  21. 21
    Результат сборки
    (размер сборки 3.45 МБ)

    View Slide

  22. 22
    Результат сборки.
    python36.zip

    View Slide

  23. 23
    Небольшие улучшения

    View Slide

  24. 24
    Результат сборки

    View Slide

  25. 25
    cx_Freeze.
    Добавление модулей и
    файлов в сборку

    View Slide

  26. 26
    Добавление модулей в сборку

    View Slide

  27. 27
    Ошибка запуска файла
    hello_world.exe

    View Slide

  28. 28
    Добавление модулей в сборку

    View Slide

  29. 29
    Результат сборки.
    python36.zip

    View Slide

  30. 30
    cx_Freeze.
    Добавление дополнительных
    файлов в сборку

    View Slide

  31. 31
    Добавление дополнительных
    файлов в сборку

    View Slide

  32. 32
    Добавление дополнительных
    файлов в сборку

    View Slide

  33. 33
    Добавление дополнительных
    файлов в сборку

    View Slide

  34. 34
    Результат сборки

    View Slide

  35. 35
    cx_Freeze.
    Создание приложений с
    графическим интерфейсом

    View Slide

  36. 36
    Создание сборок приложений с
    графическим интерфейсом.
    wxPython

    View Slide

  37. 37
    Создание сборок приложений с
    графическим интерфейсом.
    setup.py

    View Slide

  38. 38
    Результат сборки

    View Slide

  39. 39
    Результат сборки

    View Slide

  40. 40
    Избавляемся от консольного окна
    и добавляем иконку

    View Slide

  41. 41
    Избавляемся от консольного окна
    и добавляем иконку

    View Slide

  42. 42
    cx_Freeze.
    Плюсы и минусы

    View Slide

  43. 43
    Что еще умеет делать cx_Freeze

    Запускаемые файлы под Linux.

    Инсталяторы MSI под Windows.

    Пакеты RPM для Linux.

    Пакеты программ для Mac OS X (.app,
    .dmg).

    View Slide

  44. 44
    Что cx_Freeze делать не умеет

    Упаковывать все python-модули и dll-
    файлы в один exe-файл.

    Нет возможности кросскомпиляции.

    View Slide

  45. 45
    PyInstaller

    View Slide

  46. 46
    Отличия PyInstaller от cx_Freeze

    Все модули python помещаются в файл .exe.

    Возможность обфускации кода с помощью
    алгоритма AES256 (не надежно).

    Возможность создания единственного файла
    .exe.

    Задание настроек сборки через командную
    строку или с помощью файла .spec.

    View Slide

  47. 47
    Установка PyInstaller
    pip install pyinstaller
    или
    pip install --user pyinstaller

    View Slide

  48. 48
    Установка PyInstaller из
    исходников
    > git clone https://github.com/pyinstaller/pyinstaller
    > cd pyinstaller
    > python setup.py build
    > python setup.py install

    View Slide

  49. 49
    Запуск сборки
    pyinstaller example.py

    View Slide

  50. 50
    Результат сборки

    View Slide

  51. 51
    Результат сборки. Папка dist\example
    (Размер 8.8 МБ)

    View Slide

  52. 52
    Результат сборки. Папка build\example

    View Slide

  53. 53
    PyInstaller.
    Пример более сложной сборки

    View Slide

  54. 54
    Пример сборки приложения (1)
    pyinstaller myexample.py \
    --log-level WARN \
    --clean \
    --noconfirm \
    --icon images\example.ico \
    --name example_app \
    --windowed \
    --distpath "C:\Users\...\example_dist" \
    --workpath "C:\Users\...\build_tmp" \

    View Slide

  55. 55
    Пример сборки приложения (2)
    --add-data readme.txt;. \
    --add-data data;data \
    ...
    --hiddenimport importlib \
    --hiddenimport urllib \
    ...
    --exclude-module Tkinter \
    --exclude-module unittest \
    --exclude-module distutils \

    View Slide

  56. 56
    Контакты и ссылки
    E-mail: [email protected]
    Сайт: http://jenyay.net
    Github: https://github.com/Jenyay
    cx_Freeze:
    https://anthony-tuininga.github.io/cx_Freeze/
    PyInstaller:
    http://www.pyinstaller.org/
    Статья про cx_Freeze:
    http://jenyay.net/Programming/Cxfreeze

    View Slide

  57. 57
    Спасибо за внимание!

    View Slide