Pergunta

Eu estou tentando compilar um script simples que eu escrevi usando Python3 e PyQt4 usando o cx_Freeze, mas eu tenho três problemas que eu simplesmente não consigo descobrir.

  1. Eu não posso obter os ícones para aparecer.Eu estou usando um arquivo de recurso compilado para ele, i.é.a importação de um .py, contendo os recursos, e eu tentei seguir os conselhos aqui, copiar o imageformats pasta para a minha pasta de projeto, mas nada parece funcionar.

  2. Eu não estou usando severl módulos python incluindo tcl e ttk então eu adicionei-los para o excludes opção.No entanto, eles ainda parecem ser adicionado.

  3. Quando eu tento compilar com base='Win32GUI' executando o criado exe gera uma exceção: 'NoneType' has no attribute 'encoding'

Eu tenho certeza de que não é apenas algo de errado com o meu script de instalação desde o cx_Freeze documentação não é muito detalhado, por isso espero que alguém possa apontar o problema.Aqui está o script de instalação.Eu não vou postar o script que eu estou compilando porque é longo, mas, se necessário, eu vou tentar criar um concisa versão para testes.

from cx_Freeze import setup, Executable

exe = Executable(
    script='cconvert.py',
    base='Win32GUI'
)

options = dict(
    excludes=['curses', 'email', 'tcl', 'ttk']
)

setup(
    name="Coord Convertor",
    version="0.1",
    description="A Coordinate converter from DMS to DD",
    requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
    data_files=['imageformats'],
    executables=[exe],
    options={'build-exe': options}
)
Foi útil?

Solução

(Nota certeza de cerca de 1.)

2:Em options={'build-exe'..., eu acho que ele precisa ser build_exe (sublinhado em vez de traço).

3:Você está tentando acessar algo como sys.stdout.encoding em qualquer lugar? sys.stdout vai ser Nenhum quando você usar o Win32GUI da base de dados.Até mesmo um print() chamada pode gatilho.

Outras dicas

Resolvido.Além de Thomas' ponteiros, eu precisava 'imageformats' estar em 'incluir-arquivos' nas opções, não 'data_files'.Meu final de script parecido com este:

from cx_Freeze import setup, Executable

exe = Executable(
    script='cconvert.pyw',
    base='Win32GUI'
)

options = dict(
    excludes=['curses', 'email', 'tcl', 'ttk', 'tkinter'],
    include_files=['imageformats']
)

setup(
    name="Coord Convertor",
    version="0.1",
    description="A Coordinate converter from DMS to DD",
    requires=['pyqt4 (>=4.8)', 'dtlibs (>=0.4.1)'],
    executables=[exe],
    options={'build_exe': options}
)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top