06 июня 2011

Python, PyQt4, собираем в EXE питоний проект

Доброго времени суток.
   В прошлой статье мы написали небольшое приложение на PyQt4. Как можно понять по заголовку, сегодня мы сделаем так, чтобы наше приложение запускалось у тех людей, у кого не установлен интерпретатор Python.
   Напоминаю, что в данном примере мы используем Python версии 2.6. Для начала необходимо подготовится. Скачиваем PyWin (питоновский бандл ("связка, пакет" - англ), предоставляющий возможность работы с WinAPI), Pyinstaller (пакет для сборки питоньих скриптов в EXE файл), и UPX - упаковщик. Кстати, если обратите на описание Pyinstaller'а, приятно удивитесь, что Pyinstaller собирает питоновские проекты в исполняемые файлы не только для Windows, но и для Linux и Mac OS X.

   С установкой PyWin, я думаю у вас вопросов не возникнет. Pyinstaller распакуйте в удобную для вас папку, у меня он находится в папке с Python. UPX - портативный, тоже распакуйте туда, куда вам удобно. Дальше я просто прописал пути к UPX и Pyinstaller  в системную переменную PATH. Это сделано для удобства, чтобы можно было вызывать приложение или скрипт из командной строки просто написав имя программы, не указывая полного пути к ней. В *nix - like системах вам этого делать не нужно, т.к касается только Windows.
  Переходим в папку с Pyinstaller, запускаем configure.py. Если все было сделано правильно, тот скрипт ругаться не будет. В противном случае смотрите пути. Итак, все готово для работы!
   Открываем консоль, переходим в папку с нашим проектом.  Сборка пройдет в два этапа.
1. Набираем в командной строке:

makespec.py -F -w -X example.py

Если кто поленился прописать пути в PATH, тому нужно указывать полные пути к скриптам Pyinstaller'а. Этой командой мы указали скрипту makespec.py какие параметры будем использовать при сборке нашего проекта example.py. Здесь их всего три (параметров больше, почитайте доки по Pyinstaller, они находятся, как ни странно в папке "doc"). Регистр важен!

   Параметр -F сообщает, что по результату сборки мы получим всего один файл.
   Параметр -w сообщает, что приложение будет запускаться без консольного окна.
   Параметр -X сообщает, что приложение будет упаковано с помощью UPX.

В папке появился только что созданный файл спецификации сборки example.spec.

2. Ззапускаем следующее:

Build.py example.spec

Наблюдаем за происходящим в командной строке. После окончания сборки видим, что в папке проекта появились папки build и dist, в которой и находится наше собранное приложение. Запускаем его!
Достаточно большой вес приложения, даже после упаковки объясняется тем, что к проекту прилинкованы еще и некоторые из библиотек. Это нормально.







С уважением, Ваш В.А

11 комментариев:

  1. А вы не пробовали под мобильные телефоны приложения собирать? было бы оч полезно поучиться) У вас очень хорошо получается объяснять..

    ОтветитьУдалить
  2. Спасибо, мне всегда казалось, что я достаточно скучно это делаю. Собирать под мобильные телефоны приложения пока не пробовал.

    ОтветитьУдалить
  3. Спасибо, отличная статья, все просто и понятно.
    Пока сюда не прошел мучился полтора часа с py2exe но все собранные программы не хотели запускаться =( Теперь все работает! Спасибо еще раз!

    ОтветитьУдалить
  4. Всегда пожалуйста, Дмитрий. Заходите.

    ОтветитьУдалить
  5. супер, огромное спасибо!

    ОтветитьУдалить
  6. А как сейчас дела обстоят с этим, много времени прошло? Как с Питоном 3-м ?

    ОтветитьУдалить
  7. Этот комментарий был удален администратором блога.

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