Execute scripts Python sem chamar explicitamente o `python`

39

Estou usando o Debian Linux.

Eu queria saber se havia uma maneira de configurar para executar todos os scripts Python no terminal digitando script.py(em vez de python script.py).

user2018084
fonte

Respostas:

58

Há duas coisas que você precisa fazer:

  • Verifique se o arquivo é executável: chmod +x script.py
  • Use um shebang para que o kernel saiba qual intérprete usar. A linha superior do script deve ser:

    #!/usr/bin/python
    

    Isso pressupõe que seu script será executado com o python padrão. Se você precisar de uma versão específica, basta especificar no shebang:

    #!/usr/bin/python2.7
    

Agora você pode digitar:

    ./script.py

se o script estiver no seu diretório atual ou:

    script.py

se a localização do script estiver em seu PATH, ou:

    path/to/script.py

de outra forma.

Paulo
fonte
32
Geralmente, é uma idéia melhor usar #!/usr/bin/env python, caso o usuário tenha uma compilação local de python (por exemplo, in /usr/local/bin) com a qual eles preferem executar o script.
sapi 20/10
3
@sapi Não de acordo com o Debian, não é, pelo menos em suas políticas de desenvolvimento. Se você está escrevendo seus próprios scripts, pode aceitar o risco, é claro, é melhor ser explícito. Se você quiser o local, escolha-o no shebang.
Paulo
3
Não é bashque lê o arquivo ao executar ...
unperson325680
@progo Isso é verdade - observe que, se vir uma resposta que você acha que se beneficiaria com a melhoria, vá em frente e edite-a, as melhorias são sempre bem
Paul
E você terá que fazer ./script.py, nãoscript.py
Paul Draper
33

No linux, você pode simplesmente usar o hashbang (aka shebang). Adicione a linha

#!/usr/bin/python

se você deseja executar o interpretador python padrão.

#!/path/to/python[x.x]

para usar uma versão específica ou

#!/usr/bin/env python

Se você deseja que o ambiente encontre python para você.

Você também será solicitado a tornar o script executável

chmod +x script[.py] 
Gaurav Joseph
fonte
2

Usar:

#!/usr/bin/env python

Isso garantirá que o python que o usuário espera ser usado seja o que executa o script. Isso é especialmente importante se o usuário estiver usando o virtualenv para ter uma versão específica do python em um determinado ambiente.

Cory Klein
fonte
0

Use uma linha shebang na parte superior do seu script, como abaixo:

! / usr / bin / python

Atualize a versão python apropriada na qual você deseja executar o script. por exemplo, para python 3.6 sua

! /usr/bin/python3.6

para intérprete padrão

! / usr / bin / python

Nota: Verifique se o script possui permissão executável.

Suraj Bora
fonte