Como executar script Python como programa normal?

Iniciado por GuiEdington, 08 de Março de 2015, 19:12

tópico anterior - próximo tópico

GuiEdington

Olá pessoal,

Eu fiz um programinha em python para extrair o audio em mp3 de qualquer vídeo, aí eu queria executar esse programa como qualquer outro no ubuntu (tipo o gedit, que você digita no terminal "gedit" e ele executa) sem precisar ir na pasta onde ele está e digitar ./programa, entende? Alguém pode me ajudar?

irtigor

O script tem que estar em um diretório presente na variável de ambiente PATH. Veja: http://www.linfo.org/path_env_var.html

GuiEdington

Obrigado pela resposta irtigor,

Consegui resolver copiando o arquivo para o diretório /bin:

$ sudo cp arquivo /bin

Depois usei no terminal:

$ chmod 755 /bin/arquivo

Pra dizer que ele é executável, e na primeira linha do código eu coloquei:

#!/usr/bin/python

Pra informar que ele é executado com o Python.

Depois disso ele executou direitinho no terminal como qualquer programa normal do ubuntu  ;D

Obs.: Salvei o código sem a extensão '.py'

byjav

O directório /bin es reservado para os programas essenciais e portanto não é adequado para os scripts de usuário.

A solução perfeita para um script pessoal seria colocá-lo num subdirectório especial de ~ (por exemple, ~/bin), que seja em PATH. O usuário pode modificar os variáveis de ambiente no arquivo ~/.profile. Fazemos o directório de executáveis assim:
mkdir ~/bin
echo 'PATH="$HOME/bin:$PATH"; export PATH' >> ~/.profile

e depois basta copiar o executável lá:
cp arquivo ~/bin
Agora tudo vai funcionar. Não é preciso sudo, o que é bom.

Se quiser que o script seja disponível para todo o sistema, isto é, para todos os usuários, seria bom instalá-lo no sistema. O directório /bin não é adequado. O directório /usr/bin, também não, pois serve para os aplicativos oficialmente oferecidos pela distribução. O directório para software local é /usr/local/bin. Então, a solução mais simples seria copiar o arquivo a /usr/local/bin. Mas nesse caso haveria arquivos no sistema, dos quais o gerenciador dos pacotes não teria ideia, o que não é bom. O melhor é usar checkinstall que cria um pacote deb e instala o pacote. Por isso é preciso um simples Makefile, por exemplo
install:
    cp arquivo /usr/local/bin

(a indentação faz-se com tabs) e depois
sudo checkinstall

checkinstall também é imprescindível para instalar software compilado a partir de código fonte.