Главная

Tuesday, 17 August 2021

Cоздание ЕХЕ из Python-файлов.


Всем привет.

Утилита py2exe позволяет превратить любой скрипт на Python в монолитный исполняемый файл Windows, и запускать без наличия интепретатора Python в системе.

Домашняя страница проекта - http://www.py2exe.org/index.cgi/FrontPage.

Вначале подготовим площадку для конвертации .py -> .exe. Установим сам Python. Проверим связь Python-файлов в Windows:

c:>assoc .py

.py=Python.File

c:>ftype Python.File

Python.File="C:Python27python.exe" "%1" %*

Теперь зная какой у нас Python - качаем файл самого конвертора со страницы  http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/, в данном случае - py2exe-0.6.9.win32-py2.7.exe. Устанавливаем его. Чтобы убедиться, что все пакеты готовы к работе - запускаем консоль и проверяем:


Если сообщений импорта нет - то всё Ok.

Для создания своего exe-файла - нам потребуется создать файл setup.py с такими содержимым:

# py2exe download link: http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/

from distutils.core import setup

import py2exe, sys, os

sys.argv.append("py2exe")

setup(

    options = {'py2exe': {'bundle_files': 1, 'compressed': True}},

    windows = [{'script': "Client.py"}],    

    zipfile = None

)

py2exe-0.6.9.win32-py2.7.exe переименовываем в py2exe.exe и оставляем тут же. Создаём Python-скрипт, который станет exe-файлом, в данном случае - он называется Client.py и содержит всего одну строку:

print('Hello World!')

Проверяем как он работает:

c:>python Client.py

Hello World!

Запускаем создание exe:

c:>python setup.py

Проверяем:

c:>dir dist

c:dist>Сlient.exe

Hello World!

Готово. Теперь можно скопировать dist\Сlient.exe на любую Windows-машину, и запускать его там. Больше ничего копировать не нужно. Если скрипт импортирует какие-то дополнительные модули - они будут включены в exe. За это отвечает параметр bundle_files. К сожалению утилита py2exe работает только с 2-й версией Python.

Успехов.

2 comments:

  1. На сайте есть версия для Python 3.

    ReplyDelete
  2. pip install pyinstaller
    pyinstaller --onefile Client.py

    ReplyDelete

А что вы думаете по этому поводу?