Pergunta

Estou tentando compilar um script wxpython muito simples em um executável usando o PyInstaller no Windows Vista.

O script Python não passa de um mundo de olá em Wxpython. Estou tentando colocar isso em funcionamento como executável do Windows antes de adicionar algum dos recursos que o programa precisa ter. Mas já estou preso.

Eu pulei alguns loops em relação ao msvcr90.dll, msvcp90.dll e msvcpm90.dll, que acabei copiando da minha instalação do Visual Studio (C: Arquivos de Programa Microsoft Visual Studio 9.0 VC Redist X86 Microsoft.vc90.crt).

Como de acordo com as instruções para o PyInstaller, eu corro:

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...

Até agora tudo bem. Eu continuo.

Command:
Makespec.py -F guitest.py

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

Depois, há o comando final.

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

Recebo o arquivo 'guitest.exe' resultante, mas, após a execução, ele "simplesmente trava" ... e não há informações de depuração. É apenas uma daquelas falhas padrão do Windows Vista.

O script em si, o guitest.py funciona muito bem por si só. Ele só trava como executável e estou completamente perdido. Eu nem sei o que procurar, já que nada que eu tentei retornou algum resultado relevante.

Outro arquivo é gerado como resultado do processo de compilação, chamado 'warnguitest.txt'. Aqui estão seu conteúdo.


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)

Não sei o que diabos fazer de nada disso. Novamente, minhas pesquisas foram infrutíferas.

Foi útil?

Solução 2

Encontrei a solução para esse problema na lista de discussão do PyInstaller, e é notavelmente simples, apenas sem documentos.

O PyInstaller ainda não suporta o Python 2.6. A solução é obter um patch a partir de uma página que agora pode ser encontrada no processo de compilação que eu estava tentando, se alguém tentar compilar usando o Python 2.6.

Obrigado a todos!

Editar: a página costumava ser hospedada em http://svn.pyinstaller.org/branches/py26win Mas não existe mais.

Outras dicas

No Windows, achei o PY2EXE mais estável e mais fácil de usar, você já tentou isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top