Найти - Пользователи
Полная версия: Сборка приложения на PyQt4 в .exe файл.
Начало » GUI » Сборка приложения на PyQt4 в .exe файл.
1
WotS
Друзья, рад вас приветствовать. Собственно, вопрос описан в заголовке темы. Подскажите пожалуйста как можно собрать в .exe файл приложение, написанное на PyQt4. Нашёл вот эту статью: http://asakasinsky.blogspot.ru/2011/06/pyqt4-exe.html но не смог по ней создать .exe'шник.
vrabey
WotS
попробуй cx_Freeze
http://fkn.ktu10.com/?q=node/3908

а с Pyinstaller у меня тоже не получилось
4kpt_II
Когда-то по PyInstaller писал специальную документацию для студентов. Могу дать. Но лучше действительно использовать для этих задач cxFreeze ибо внутри pyInstaller там не все так гладко, как хотелось бы
JOHN_16
WotS
cx_Freeze.
Вот например у меня есть програмка на Qt, сделанная 1 файлом name.pyw. После установки cx_Freeze, введя в консоли команду cxfreeze.bat name.pyw, я получаю папку dist со сборкой всего необходимого и файлом name.exe - что может быть проще? Если проект чуть сложнее 1 файла, возможно, понадобится указать некоторые ключи конфигурации, которые можно узнать в документации.
WotS
Всё пробую cx_Freeze — никак не получается. Созданынй .exe файл не открывается.
http://www.pythonschool.net/cxfreeze_win/
http://www.youtube.com/watch?v=Qx5h_-5zEsQ

По этим урокам делал.
JOHN_16
WotS
выкладывайте ваш проект
WotS
http://yadi.sk/d/1Db1M_llMY2zM
JOHN_16
Итак, для начала делаем
 cxfreeze.bat course.py
в получившуюся директорию dist копируем изображение. Запускаем (через консоль что бы видеть тексты ошибок), ругается на отсутствующий модуль atexit, но это не беда, руками указываем cx_Freeze подгружать и его:
cxfreeze.bat --include-modules atexit course.py
В результате программа запустится, но окна не видно. Далее начинаем отладку для разбора что же за гадость такая происходит, смотрим ваш код. В конструкторе главного класса (=класса главного окна программы) 2 метода, в результате манипуляций с ними выясняем что если убрать все что связанно с изображением: метод loadImage и self.resize(self.img.width(), self.img.height()) в initUI, то окно появляется. Если вернуть метод loadImage, а в initUI руками задать размеры окна, то окно появляется но без изображения. Отсюда делаем вывод что какие то проблемы вокруг изображения, вставляем для отладки строчку
print self.img.width(), self.img.height()
и видим что в обычном запуске размеры изображения 438, 307 , а в случае с cx_Freeze 0, 0 . Вот где собака зарыта - изображение либо не загружается, либо что то еще,но связанное с ним.

Попытка подсмотреть разницу в импоритируемых модулях при запуске через python и cx_Freeze, с последующим указанием их последнему не увенчалась успехом.

Где закралась проблема - не знаю и пока идей нет. Может кто еще подскажет?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB