Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Проблема с Pyinstaller2.0 (Python 2.7)


Автор: vshnukrshna 30.5.2013, 19:39
Здравствуйте.
Итак, мне надо преобразовать .py в .exe. 
Простой код, выводящий в консоли "hello world!" преобразуется в .exe без проблем и все отлично работает. Проблемы начинаются если я пытаюсь преобразовать код с gui. Никаких сообщений об ошибках нет, exe-шник создается, но не работает. Кто-нибудь сталкивался с таким? Я делаю так: python pyinstaller.py -w helloworld.py. Может здесь уже есть ошибка?

Автор: av0000 30.5.2013, 21:56
Наверняка! ;)

Не знаю, как pyinstaller, а в py2exe приходится добавлять кучку специальных действий...
Гуй, кстати, какой?
Наверняка надо принудительно присоединить к файлу библиотеки гуя и виндовый рантайм...

Для pyQt + CheetahTemplate есть пример 3-х летней давности… может и работает smile разве что тут опции не для единого exe, а наоборот - папки. Тут уж гугл в помощь...

Код

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# py2exe setup script

from distutils.core import setup
from glob import glob
import py2exe
import PyQt4

data_files = [
("", ["Microsoft.VC90.CRT.manifest", "msvcp90.dll","msvcr90.dll")]), # добавляем виндовый рантайм (предварительно его положив рядом с этим файлом)
("", [os.path.join(os.path.dirname(PyQt4.__file__), 'translations', 'qt_ru.qm')]), # Qt4 translations
("", [os.path.join(os.path.dirname(PyQt4.__file__), 'bin', 'QtXmlPatterns4.dll')]) # Force add Qt dll for Webkit
]

setup(
  data_files = data_files,
  options = { "py2exe": {
    "includes": ["decimal", "datetime", "Cheetah.DummyTransaction",
            "sip", "PyQt4.QtNetwork",], # обазательно добавляем это для Qt
    "excludes": ["pdb", "email.utils", "bz2", "select",
                "pygments", "markdown", "memcache", "doctest", "unittest",
                "_codecs_cn","_codecs_hk","_codecs_jp","_codecs_2022","_codecs_tw",
                "ftplib"], # малость урезаем размер exe
    "dist_dir": '.dist',
    "dll_excludes": ["w9xpopen.exe"],
    "compressed":False,
    "skip_archive":True 
    },
  windows = {
  'script': 'testcheeQt.py',
  'icon_resources': [(0, 'img/app_icon.ico')]
}
)

Автор: Dem_max 1.6.2013, 20:00
Цитата

# добавляем виндовый рантайм (предварительно его положив рядом с этим файлом)

Глупости написаны, это рантайм Visual Studio, к WinAPI отношения никакого не имеет, как другой рантайм любого компилятора. Для запуска программы использующей исключительно WinAPI рантайм вообще не нужен.

Автор: av0000 2.6.2013, 11:29
Цитата(Dem_max @  1.6.2013,  20:00 Найти цитируемый пост)
Глупости написаны, это рантайм Visual Studio


Ну, предупредил же, что 3-летней давности smile 
Мало ли что там "на автопилоте" было написано… С тех пор под винду как-то и не писалось ничего, вот в глаза и не бросилось.

Таки да, рантайм студии, которой собран питон.
По нынешним временам велик шанс, что кто-то это дело уже установил и не надо тащить за собой… Или сделать совсем "модный" вариант - заставить бедного юзера самому лезть на мелкософтовский сайт и качать vcredist2008.exe, кажется…

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)