Pular para o conteúdo

Como usar o shebang do Python eficientemente?

CodeMDD.io

Executando Scripts Python Com um Shebang

por Bartosz Zaczyński Mar 20, 2023 [boas-práticas](https://codemdd.io/tutoriaishttps://codemdd.io/boas- práticashttps://codemdd.io/) intermediário

Table of Contents

  • O que é um Shebang e quando você deve usar?
  • Como um Shebang funciona?
  • Como definir um Shebang portátil?
  • Quais são alguns exemplos de Shebang?
  • Como usar um Shebang com um interpretador personalizado em Python?
  • Quais são as melhores práticas para o Shebang?
  • Conclusão

Quando você lê o código Python de outra pessoa, frequentemente vê uma linha misteriosa, que sempre aparece no topo do arquivo, começando com a sequência distintiva de shebang (#!). Parece um comentário não tão útil, mas além disso, não se parece com mais nada que você aprendeu sobre Python, fazendo você se perguntar o que é aquilo e por que está lá. Como se isso não bastasse para te confundir, a linha de shebang só aparece em alguns módulos Python.

Neste tutorial, você vai:

  • Aprender o que é um shebang
  • Decidir quando incluir o shebang em scripts Python
  • Definir o shebang de uma forma portátil em diferentes sistemas
  • Passar argumentos para o comando definido em um shebang
  • Conhecer as limitações do shebang e algumas alternativas
  • Executar scripts através de um interpretador personalizado escrito em Python

O que é um Shebang e quando você deve usá-lo?

Python

#!https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/python3
print("Olá, Mundo!")

Se você está usando um shebang, ele deve aparecer na primeira linha do seu script e deve começar com um sinal de hash (#) seguido por um ponto de exclamação (!), conhecido coloquialmente como “bang”, daí o nome shebang. A escolha do sinal de hash para iniciar essa sequência especial de caracteres não foi acidental, já que muitas linguagens de script o utilizam para comentários inline.

Você deve ter certeza de não colocar nenhum outro comentário antes da linha de shebang, se deseja que ela funcione corretamente, caso contrário, ela não será reconhecida! Após o ponto de exclamação, especifique um caminho absoluto para o interpretador de código relevante, como o Python. Especificar um caminho relativo não terá efeito, infelizmente.

Como um Shebang funciona?

Quando você executa um script com um shebang, o sistema operacional lê a ela e usa a informação contida nela para determinar qual interpretador de código usar para o restante do arquivo. Ele invoca o interpretador especificado pelo caminho do shebang e passa o arquivo de script como um parâmetro para o interpretador.

Por exemplo, se você executar o script Python de exemplo mencionado anteriormente em um sistema Linux, o sistema operacional lerá a linha de shebang #!https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/python3, invocará o interpretador Python em https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/python3 e passará o caminho completo do arquivo de script como um argumento para o interpretador. O interpretador Python então leva o arquivo de script e o executa, produzindo a saída na tela se houver algum.

Como você pode definir um Shebang portátil?

Embora você possa especificar o caminho absoluto para um interpretador de código em um shebang, isso pode não ser portátil entre diferentes sistemas operacionais. O caminho absoluto para o interpretador pode variar de sistema para sistema, portanto, seu script pode não ser executado corretamente em todos os lugares onde você deseja entregá-lo ou executá-lo.

Para escrever um shebang portátil, você pode usar o programa env disponível em sistemas Unix-like. O programa env permite que você especifique o interpretador desejado por meio de uma variável de ambiente, como $PYTHON, em vez de usar um caminho absoluto para o interpretador.

Veja um exemplo de shebang que usa o programa env para torná-lo portátil:

#!https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/env python3
print("Olá, Mundo!")

Ao usar o env, o sistema operacional procura o interpretador especificado pela variável de ambiente dentro do $PATH (caminho de pesquisa) do sistema, onde são armazenados os executáveis. Com isso, você não precisa se preocupar com o caminho absoluto do interpretador, pois o sistema se encarregará de encontrá-lo para você.

Essa abordagem torna o script mais portátil entre diferentes sistemas operacionais. No entanto, você ainda precisa garantir que o interpretador esteja disponível no caminho de pesquisa nos sistemas em que você deseja executar o script.

Quais são alguns exemplos de Shebang?

Aqui estão alguns exemplos de shebang para diferentes interpretadores Python em sistemas Unix-like:

  • Shebang para o Python 3:
#!https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/env python3
  • Shebang para o Python 2:
#!https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/env python2
  • Shebang para o Python em um ambiente virtual:
#!https://codemdd.io/pathhttps://codemdd.io/tohttps://codemdd.io/virtualhttps://codemdd.io/envhttps://codemdd.io/binhttps://codemdd.io/python

Lembrando que esses exemplos são apenas diretrizes gerais e você deve substituir o caminho pelo caminho correto para o seu interpretador Python específico.

Como você pode usar um Shebang com um interpretador personalizado em Python?

Além de usar o interpretador Python padrão fornecido pelo sistema operacional, você também pode criar seu próprio interpretador Python personalizado e usá-lo em um shebang.

Para fazer isso, siga estas etapas:

  1. Crie um arquivo my_python em um editor de texto.

  2. Escreva as linhas de código Python para o seu interpretador personalizado no arquivo, como:

#!https://codemdd.io/usrhttps://codemdd.io/binhttps://codemdd.io/env python3
print("Este é o meu interpretador Python personalizado!")
  1. Salve o arquivo e feche-o.

  2. No terminal, torne o arquivo my_python executável usando o comando:

$ chmod +x my_python
  1. Agora você pode executar o script my_python diretamente a partir do terminal, como faria com qualquer outro script Python:
$ .https://codemdd.io/my_python
Este é o meu interpretador Python personalizado!

Quais são as melhores práticas para o Shebang?

Aqui estão algumas melhores práticas que você deve considerar ao usar um shebang em seus scripts Python:

  • Use um shebang apropriado para especificar o interpretador de código. Isso torna seu script independente do ambiente em que é executado.

  • Evite usar caminhos absolutos para o interpretador de código em um shebang, pois eles podem não ser portáteis entre diferentes sistemas operacionais. Em vez disso, use o programa env para tornar o shebang mais portátil.

  • Certifique-se de que o interpretador especificado no shebang esteja disponível no sistema em que o script será executado.

  • Use a codificação UTF-8 para o arquivo de script, especificando a linha de codificação no início do arquivo:

# -*- coding: utf-8 -*-
  • Mantenha a linha do shebang curta para facilitar a leitura e evitar problemas de formatação.

Conclusão

Agora você sabe o que é um shebang, como ele funciona e quando deve usá-lo em seus scripts Python. Você aprendeu como definir um shebang portátil, passar argumentos para o interpretador e usar um shebang com um interpretador personalizado. Além disso, você conheceu algumas melhores práticas para o uso de shebangs em seus scripts Python.

Usar um shebang adequado em seus scripts Python pode torná-los mais flexíveis e portáteis, facilitando a execução em diferentes ambientes. Então, da próxima vez que você ver uma linha de shebang em um script Python, você saberá exatamente o que significa e por que está lá.