Autor Tópico: Como executar script Python como programa normal?  (Lida 6273 vezes)

Offline GuiEdington

  • Usuário Ubuntu
  • *
  • Mensagens: 31
    • Ver perfil
Como executar script Python como programa normal?
« Online: 08 de MAR?O de 2015, 19:12 »
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?
« Última modificação: 08 de MAR?O de 2015, 19:55 por GuiEdington »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Re: Como executar script Python como programa normal?
« Resposta #1 Online: 08 de MAR?O de 2015, 19:22 »
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

Offline GuiEdington

  • Usuário Ubuntu
  • *
  • Mensagens: 31
    • Ver perfil
Re: Como executar script Python como programa normal?
« Resposta #2 Online: 08 de MAR?O de 2015, 19:54 »
Obrigado pela resposta irtigor,

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

Código: [Selecionar]
$ sudo cp arquivo /bin
Depois usei no terminal:

Código: [Selecionar]
$ chmod 755 /bin/arquivo
Pra dizer que ele é executável, e na primeira linha do código eu coloquei:

Código: [Selecionar]
#!/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'

Offline byjav

  • Usuário Ubuntu
  • *
  • Mensagens: 11
    • Ver perfil
Re: Como executar script Python como programa normal?
« Resposta #3 Online: 09 de MAR?O de 2015, 09:38 »
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:
Código: [Selecionar]
mkdir ~/bin
echo 'PATH="$HOME/bin:$PATH"; export PATH' >> ~/.profile
e depois basta copiar o executável lá:
Código: [Selecionar]
cp arquivo ~/binAgora 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
Código: [Selecionar]
install:
    cp arquivo /usr/local/bin
(a indentação faz-se com tabs) e depois
Código: [Selecionar]
sudo checkinstall
checkinstall também é imprescindível para instalar software compilado a partir de código fonte.