Não Consegue Obter um Desktop Desktop Launcher para um Programa Python

0

Estou criando um pacote Debian inteiramente novo cpconverter , que é A simple utility to change the code page of plain text based files , de uma fonte publicada no Google Code.

Tudo correu bem. No entanto, não consigo obter um launcher de ativação do launchpad.

O arquivo python cpConverter.py é armazenado na pasta /usr/share/cpconverter/cpconverter/ .

Eu tenho um Shell Script chamado cpconverter na pasta /usr/bin/ , que diz:

#!/bin/sh

python /usr/share/cpconverter/cpconverter/cpConverter.py

O Iniciador Desktop cpconverter.desktop é simples

[Desktop Entry]
Version=0.5
Encoding=UTF-8
Name=Code Page Converter
Name[en_US]=Code Page Converter
Comment=A simple utility to change the code page of plain text based files
Type=Application
Exec=/usr/bin/cpconverter
Icon=cpconverter
Terminal=false
StartupNotify=true
Categories=Utility;

No entanto, não consegue começar.

Eu verifiquei se o cpConverter.py está funcionando bem, lançando-o:

$ python /usr/share/cpconverter/cpconverter/cpConverter.py

Em seguida, o programa é lançado em algumas ocasiões. Depois de clicar no lançador, muitas vezes não funciona mais.

No entanto, o arquivo cpConverter.py na estrutura de construção do pacote sempre funciona, por exemplo,

$ python cpconverter-0.5/debian/cpconverter/usr/share/cpconverter/cpconverter/cpConverter.py

Eu tentei digitar a mesma linha de comando a partir de um Terminal e, em seguida, recebi uma variedade de erros inéditos (pelo menos para mim):

$ cpconverter
/usr/bin/cpconverter: 3: /usr/bin/cpconverter: pyhton: not found
$ 
$ pyhton /usr/share/cpconverter/cpconverter/cpConverter.py
No command 'pyhton' found, did you mean:
 Command 'python' from package 'python-minimal' (main)
pyhton: command not found
$

Então eu tentei dar um exemplo de trabalho para o pacote convertall , que usa Shell Script :

#!/bin/sh

exec /usr/bin/python3 /usr/share/convertall/convertall.py "$@"

A partir do Terminal, eu lançaria com sucesso com:

$ python3 /usr/share/convertall/convertall.py "$@"

Então eu modifiquei o Shell Script de acordo com a leitura:

exec /usr/bin/python2 /usr/share/cpconverter/cpConverter.py "$@"

O resultado ainda é o que o Desktop Launcher não está funcionando ... alguma ampulheta e nada. No entanto, qualquer uma dessas três linhas de comando sempre inicia o programa:

$ python2 /usr/share/cpconverter/cpconverter/cpConverter.py "$@"
$ /usr/bin/cpconverter
$ cpconverter

Os direitos de acesso para o cpconverter.desktop são padrão:

$ ls -l /usr/share/applications/clipgrab.desktop
-rw-r--r-- 1 root root 626 Dec  9  2014 /usr/share/applications/clipgrab.desktop

Por que então o Desktop Launcher não consegue iniciar o programa? O que há de errado com o meu Desktop Launcher? [Veja acima]

    
por Antonio 09.10.2015 / 02:23

2 respostas

0

Bem, como eu disse no comentário, a execução do Dash Script do diretório /usr/bin/ , assim como o iniciador do desktop, falhou com esse erro do Python:

/usr/bin$ cpconverter
Traceback (most recent call last):
  File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 342, in <module>
    app = cpConverter()
  File "/usr/share/cpconverter/cpconverter/cpConverter.py", line 74, in __init__
    builder.add_from_file("./gui/gui.xml")
glib.GError: Failed to open file './gui/gui.xml': No such file or directory
$ 

Ao executar cpconverter no prompt em outro lugar na pasta Home ou em /usr/share/cpconverter/cpconverter (onde está o arquivo coCPnverter.py), ele será bem-sucedido.

Então ficou óbvio que o culpado era o ./ no arquivo cpConverter.py .

Eu simplesmente criei um patch allow-launch-from-usr-bin-script.patch para colocar o caminho absoluto (uma vez empacotado) em vez do caminho relativo:

builder.add_from_file("/usr/share/cpconverter/cpconverter/gui/gui.xml")

Isso explicou e resolveu o problema.

    
por Antonio 10.10.2015 / 01:03
0

Eu não tenho certeza se isso é realmente necessário, mas quando eu fiz um script bash eu lancei o script com este comando "bash $$$$$$$. sh". A única razão pela qual eu mencionei isso é que a extensão .py não está no nome do script em seu iniciador de área de trabalho. Pode ser nada, vale uma olhada e uma tentativa. Craig

    
por Craig 09.10.2015 / 02:45