Получение .exe из PyInstaller с аварийным завершением работы wxPython

Я пытаюсь скомпилировать очень простой скрипт wxPython в исполняемый файл с помощью PyInstaller в Windows Vista.

Скрипт Python - это не что иное, как Hello World в wxPython. Я пытаюсь запустить его как исполняемый файл Windows, прежде чем добавлять какие-либо функции, которые необходимы программе. Но я уже застрял.

Я прошел через несколько циклов в отношении MSVCR90.DLL, MSVCP90.DLL и MSVCPM90.DLL, которые я в конечном итоге скопировал из своей установки Visual Studio (C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ redist \ x86 \ Microsoft.VC90.CRT).

По инструкции к PyInstaller запускаю:

Command:
Configure.py

Output:
I: computing EXE_dependencies
I: Finding TCL/TK...
I: could not find TCL/TK
I: testing for Zlib...
I: ... Zlib available
I: Testing for ability to set icons, version resources...
I: ... resource update available
I: Testing for Unicode support...
I: ... Unicode available
I: testing for UPX...
I: ...UPX available
I: computing PYZ dependencies...

Все идет нормально. Я продолжаю.

Command:
Makespec.py -F guitest.py

Output:
wrote C:\Code\PromoUSB\guitest.spec
now run Build.py to build the executable

Затем последняя команда.

Command:
Build.py guitest.spec

Output:
checking Analysis
building Analysis because out0.toc non existent
running Analysis out0.toc
Analyzing: C:\Python26\pyinstaller-1.3\support\_mountzlib.py
Analyzing: C:\Python26\pyinstaller-1.3\support\useUnicode.py
Analyzing: guitest.py
Warnings written to C:\Code\PromoUSB\warnguitest.txt
checking PYZ
rebuilding out1.toc because out1.pyz is missing
building PYZ out1.toc
checking PKG
rebuilding out3.toc because out3.pkg is missing
building PKG out3.pkg
checking ELFEXE
rebuilding out2.toc because guitest.exe missing
building ELFEXE out2.toc

Я получаю получившийся файл 'guitest.exe', но при выполнении он "просто вылетает" ... и нет никакой отладочной информации. Это просто один из тех стандартных сбоев Windows Vista.

Сам скрипт, guitest.py, сам по себе работает нормально. Он вылетает только как исполняемый файл, и я полностью потерялся. Я даже не знаю, что искать, поскольку ничего из того, что я пробовал, не дало соответствующих результатов.

Другой файл создается в результате процесса компиляции и называется warnguitest.txt. Вот его содержание.


W: no module named posix (conditional import by os)
W: no module named optik.__all__ (top-level import by optparse)
W: no module named readline (delayed, conditional import by cmd)
W: no module named readline (delayed import by pdb)
W: no module named pwd (delayed, conditional import by posixpath)
W: no module named org (top-level import by pickle)
W: no module named posix (delayed, conditional import by iu)
W: no module named fcntl (conditional import by subprocess)
W: no module named org (top-level import by copy)
W: no module named _emx_link (conditional import by os)
W: no module named optik.__version__ (top-level import by optparse)
W: no module named fcntl (top-level import by tempfile)
W: __all__ is built strangely at line 0 - collections (C:\Python26\lib\collections.pyc)
W: delayed  exec statement detected at line 0 - collections (C:\Python26\lib\collections.pyc)
W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Python26\lib\doctest.pyc)
W: delayed  exec statement detected at line 0 - doctest (C:\Python26\lib\doctest.pyc)
W: delayed conditional __import__ hack detected at line 0 - doctest (C:\Python26\lib\doctest.pyc)
W: delayed  __import__ hack detected at line 0 - encodings (C:\Python26\lib\encodings\__init__.pyc)
W: __all__ is built strangely at line 0 - optparse (C:\Python26\pyinstaller-1.3\optparse.pyc)
W: __all__ is built strangely at line 0 - dis (C:\Python26\lib\dis.pyc)
W: delayed  eval hack detected at line 0 - os (C:\Python26\lib\os.pyc)
W: __all__ is built strangely at line 0 - __future__ (C:\Python26\lib\__future__.pyc)
W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Python26\lib\unittest.pyc)
W: delayed conditional __import__ hack detected at line 0 - unittest (C:\Python26\lib\unittest.pyc)
W: __all__ is built strangely at line 0 - tokenize (C:\Python26\lib\tokenize.pyc)
W: __all__ is built strangely at line 0 - wx (C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\__init__.pyc)
W: __all__ is built strangely at line 0 - wx (C:\Python26\lib\site-packages\wx-2.8-msw-unicode\wx\__init__.pyc)
W: delayed  exec statement detected at line 0 - bdb (C:\Python26\lib\bdb.pyc)
W: delayed  eval hack detected at line 0 - bdb (C:\Python26\lib\bdb.pyc)
W: delayed  eval hack detected at line 0 - bdb (C:\Python26\lib\bdb.pyc)
W: delayed  __import__ hack detected at line 0 - pickle (C:\Python26\lib\pickle.pyc)
W: delayed  __import__ hack detected at line 0 - pickle (C:\Python26\lib\pickle.pyc)
W: delayed conditional exec statement detected at line 0 - iu (C:\Python26\pyinstaller-1.3\iu.pyc)
W: delayed conditional exec statement detected at line 0 - iu (C:\Python26\pyinstaller-1.3\iu.pyc)
W: delayed  eval hack detected at line 0 - gettext (C:\Python26\lib\gettext.pyc)
W: delayed  __import__ hack detected at line 0 - optik.option_parser (C:\Python26\pyinstaller-1.3\optik\option_parser.pyc)
W: delayed conditional eval hack detected at line 0 - warnings (C:\Python26\lib\warnings.pyc)
W: delayed conditional __import__ hack detected at line 0 - warnings (C:\Python26\lib\warnings.pyc)
W: __all__ is built strangely at line 0 - optik (C:\Python26\pyinstaller-1.3\optik\__init__.pyc)
W: delayed  exec statement detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
W: delayed conditional eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
W: delayed  eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
W: delayed conditional eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)
W: delayed  eval hack detected at line 0 - pdb (C:\Python26\lib\pdb.pyc)

Я не знаю, что с этим делать. Опять же, мои поиски оказались безрезультатными.


person Teekin    schedule 19.03.2010    source источник
comment
В некоторой степени не по теме, но поскольку вы написали только приветственное мировое приложение на wxPython, я бы отбросил его и начал с PyQt. Документация лучше, да и конечный продукт в целом выглядит лучше.   -  person    schedule 20.03.2010


Ответы (2)


В Windows я обнаружил, что Py2exe более стабильный и простой в использовании, пробовали ли вы это.

person Anurag Uniyal    schedule 20.03.2010

Я нашел решение этой проблемы в списке рассылки PyInstaller, и оно удивительно простое, только недокументированное.

PyInstaller еще не поддерживает Python 2.6. Решение состоит в том, чтобы получить патч со страницы, который теперь можно найти в процессе компиляции, который я пытался, если кто-то попытается скомпилировать с использованием Python 2.6.

Спасибо всем!

РЕДАКТИРОВАТЬ: страница раньше размещалась по адресу http://svn.pyinstaller.org/branches/py26win но его больше нет.

person Teekin    schedule 22.03.2010
comment
Ах да, я должен был. Но я уже давно забыл об этом. Спасибо за подсказку, вспомню в следующий раз. - person Teekin; 28.02.2012
comment
Есть еще люди, у которых есть эти проблемы, которым понравится эта ссылка - person Johnny Bigoode; 03.08.2012