pyqt Snap constrói com sucesso, falha em executar

7

Eu construí um snap usando o plugin python3. Deve abrir um aplicativo PyQt5. O snap construído sem nenhum problema, mas depois que o snap é instalado, a chamada do script python instalado na linha de comando falha com o erro abaixo.

Meu snapcraft.yaml

name: pyqthelloworld
version: 0.1.0
summary: pyqt hello world
description: |
 a pyqt5 python3 hello world test

confinement: strict

apps:
  pyqthelloworld:
    command: pyqthelloworld

parts:
  pyqthelloworld:
    plugin: python3
    source: git://github.com/ericoporto/pyqthelloworld
    source-type: git
    stage-packages:
      - python3-pyqt5
      - libc-bin
      - locales

Eu construí e instalei usando os comandos abaixo

snapcraft stage
snapcraft snap
sudo snap install pyqthelloworld_0.1.0_amd64.snap

Na linha de comando

$ pyqthelloworld

Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Current thread 0x00007fb8fc0ff700 (most recent call first):
Aborted (core dumped)

O que há de errado? E como depurar erros semelhantes em snaps?

Estou usando o Ubuntu 16.04 LTS de 64 bits

Editar: verificando se há codificações (está correto?)

user@pc:~/git/pyqthelloworld/snap$ find . -iname encodings
./prime/usr/lib/python3.5/encodings
./parts/pyqthelloworld/install/usr/lib/python3.5/encodings
./stage/usr/lib/python3.5/encodings

Edit2: Eu estou começando agora (snapcraft 2.15.1):

$ pyqthelloworld 
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.
Aborted (core dumped)

Apenas para esclarecer, sem alterações, apenas um novo snapcraft no mesmo (e atualizado) computador Ubuntu 16.04.

Editar3:

Agora adicionei uma pasta de encaixe , onde estou mantendo o snapcraft.yaml (que agora é um pouco diferente do que no início desta pergunta!) e um pequeno wrapper para lidar com o erro do código de idioma - que eu acho que não deveria ser necessário.

Agora, quando eu executo o comando (pyqthelloworld) para o snap instalado, estou recebendo:

This application failed to start because it could not find or load the Qt platform plugin "xcb"
in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, xcb.

Reinstalling the application may fix this problem.
Aborted (core dumped)
    
por Elric 07.06.2016 / 05:16

2 respostas

4

Atualmente há dois bugs relacionados a snaps que bloqueiam isso, mas ambos estão em desenvolvimento:

Você pode verificar o conteúdo do seu snap e ver se há algum encodings modules enviado?

    
por dholbach 17.06.2016 / 07:22
2

Eu acho que você provavelmente foi uma vítima do problema de hashbang, versões recentes do snapcraft devem resolver isso, se não uma outra opção é usar um caminho relativo em command para que essencialmente command seja command: usr/bin/pyqthelloworld

    
por sergiusens 02.09.2016 / 20:37

Tags