Windows: утилита py2exe – создание exe-файлов из файлов Python

Автор: | 20/02/2015

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

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

Проверяем связь 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.win64-py2.7.amd64.exe.

Устанавливаем, обращаем внимание на пути – может пригодиться в случае проблем:

py2exe_1

Для работы py2exe – требуется пакет setuptools.

Качаем скрипт https://bootstrap.pypa.io/ez_setup.py, устанавливаем:

c:>python c:optez_setup.py
...
Installed c:python27libsite-packagessetuptools-12.2-py2.7.egg
Processing dependencies for setuptools==12.2
Finished processing dependencies for setuptools==12.2

Что бы убедиться, что все пакеты готовы к работе – запускаем консоль и проверяем:

c:>python
Python 2.7.6 (default, Nov 10 2013, 19:24:24) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from distutils.core import setup
>>> import py2exe
>>>

Если ошибок импорта нет – то всё работает.

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

from distutils.core import setup
import py2exe

setup(console=['hello.py'])

Создаём Python-скрипт, который будем превращать в exe-файл, в данном случае – он называется hello.py и содержит всего одну строку:

print('Hello World!')

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

c:>python hello.py
Hello World!

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

c:>python setup.py py2exe
...
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.

USER32.dll - C:Windowssystem32USER32.dll
SHELL32.dll - C:Windowssystem32SHELL32.dll
ADVAPI32.dll - C:Windowssystem32ADVAPI32.dll
WS2_32.dll - C:Windowssystem32WS2_32.dll
GDI32.dll - C:Windowssystem32GDI32.dll
KERNEL32.dll - C:Windowssystem32KERNEL32.dll

Проверяем:

c:>dir dist
Volume in drive C is OSDisk
Volume Serial Number is C04B-8B6F

Directory of c:dist

19.02.2015 17:13 <DIR> .
19.02.2015 17:13 <DIR> ..
10.11.2013 18:24 80 896 bz2.pyd
19.02.2015 17:13 24 064 hello.exe
19.02.2015 17:13 1 605 316 library.zip
10.11.2013 18:24 3 004 416 python27.dll
10.11.2013 18:24 10 752 select.pyd
10.11.2013 18:24 689 664 unicodedata.pyd
10.11.2013 18:25 474 624 _hashlib.pyd
7 File(s) 5 889 732 bytes
2 Dir(s) 222 058 872 832 bytes free
c:dist>hello.exe
Hello World!

Готово. Теперь можно скопировать директорию dist на любую Windows-машину, и запускать hello.exe.

Если скрипт импортирует какие-то дополнительные модули – они будут включены в exe– и dll-файлы.

Подробнее смотрите в FAQ – http://www.py2exe.org/index.cgi/FAQ.