Иногда может захотеться странного: например, сделать дистрибутив программы на python для простого использования в windows, чтобы им можно было пользоваться без установки интерпретатора. Быстрый поиск выдаёт информацию об утилите py2exe. Чуть более глубокое изучение наводит на PyInstaller. Я попробовал обе утилиты, у каждой оказались свои плюсы и минусы.
py2exe
Качаем с официального сайта последнюю версию для python 2.7 и устанавливаем. В папке с нашей программой создаём и сохраняем новый скрипт setup.py:
from distutils.core import setup
import py2exe
setup(console=['myprog.py'])
для консольного приложения, для графического:
from distutils.core import setup
import py2exe
setup(windows=['myprog.py'])
Запуск скрипта setup.py: python setup.py py2exe
В результате будут созданы каталоги "build" и "dist". Каталог build используется как рабочая область на время упаковки приложения, и его можно удалить после окончания работы сценария setup.py. Файлы в каталоге dist — это ваше практически готовое приложение. Можно удалить файлы unicodedata.pyd, bz2.pyd, select.pyd, w9xpopen.exe. Приложение может отказаться запускаться из-за отсутствие библиотек Visual Studio. В качестве решения проблемы можно кинуть dll и файл манифеста в папку с программой: msvcr90.dll и Microsoft.VC90.CRT.manifest. Эти файлы можно найти в папке с python. Готово! Вес двух моих небольших программ составил 11,5 и 13,4 МБайт, или соответсвенно 5,2 и 4,4 в zip-архивах.
PyInstaller
Переходим к PyInstaller. Качаем с официального сайта последнюю версию Python for Windows extensions для python 2.7 и устанавливаем. Качаем с официального сайта последнюю версию PyInstaller, распаковываем архив в \python\Lib\site-packages\, выполняем в папке утилиты python Configure.py.
Создаём файл настройки для своей программы: python Makespec.py yourprogram.py. Его можно редактировать: например, в строке с console=True исправить на False, чтобы при запуске программы не запускалось окно консоли. Собираем программу: python Build.py specfile. Появится новая папка с портативной версией, копировать ничего туда не нужно, PyInstaller уже об этом позаботился, но можно удалить unicodedata.pyd, если это не повлияет на работу программы. Вес программ составил 9,4 и 8,1 МБайт, или 4,8 и 3,9 в zip-архивах.
Подведём итоги: утилита py2exe компактная и простая, подойдёт вам, если вы ограничены по времени или не можете много качать из интернета; утилита PyInstaller даёт возможность тонкой настройки и позволяет собрать компактную программу (особенно, если установлен upx). Выбор за вами!
PS Дополнительная информация: Облегчаем использование pyinstaller для создания exe и Немного про py2exe на хабре.