Launcher para um programa em Python que requer bibliotecas extras

1

Estou tentando fazer com que um iniciador trabalhe no programa WikidPad (python).
Eu já tenho um programa python, então eu olhei no arquivo /usr/share/applications/taskcoach.desktop . A linha exec foi simplesmente taskcoach.py .

Mas eu não consigo iniciar o WikidPad apenas digitando "WikidPad.py", eu tenho que escrever python WikidPad.py , então ele inicia corretamente a partir da linha de comando.

Então eu fiz o .desktop file para o wikidpad, na linha exec eu escrevi python /home/abc/wikidpad/WikidPad.py .

Mas parece que você precisa estar no mesmo diretório para obter resultados corretos, caso contrário, há o erro No module named pwiki.Enum .

Então eu mudei a linha exec para cd /home/abc/wikidpad;python WikidPad.py .

Mas isso também não funcionou, a mensagem de erro foi cd could not be executed, file or directory not found .

Se eu quiser executar um comando Linux em um script bash e receber um erro "comando / arquivo não encontrado", ajuste a variável PATH ou grave o caminho completo do comando. Isso normalmente ajuda.

Mas, neste caso, cd é um comando bash e não consigo escrever whereis cd para obter o caminho completo do comando.

Eu não tenho ideia de como isso funciona.

    
por Wolfgang Adamec 01.06.2013 / 06:38

2 respostas

2

A chave Exec em um arquivo .desktop aceita apenas um nome de executável (+ argumentos):

The Exec key must contain a command line. A command line consists of an executable program optionally followed by one or more arguments.

Então, você também:

  • invoca o shell com um sh -c "command_string" explícito (onde command_string = seus comandos reais):

    Exec=sh -c "cd /home/abc/wikidpad; python WikidPad.py"
    

ou

  • coloque seus comandos em um script (em algum lugar no seu $PATH ), torne-o executável e faça com que o arquivo .desktop execute o script:

    Exec=my_script
    

    (ou Exec=/full/path/to/my_script se o script não estiver no seu $PATH ).

por 01.06.2013 / 17:18
1

Depende um pouco de onde o diretório pwiki é (ou um arquivo pwiki.py ), mas supondo que esteja em /home/abc/wikidpad/ , você pode adicionar o seguinte a /home/abc/wikidpad/WikidPad.py antes do a importação de pwiki.Enum :

import sys
sys.path.insert(0, '/home/abc/wikidpad')

(Substituindo o diretório pelo diretório onde você encontrou pwiki )

    
por 01.06.2013 / 10:16