Como executar um programa Python diretamente?


13

Como executar um programa Python diretamente?

Eu criei um arquivo .py (por exemplo, mnik.py ) no gedit. Funciona sem problemas no terminal.

Comando continua

python3 mnik.py

Mas sempre que clico no arquivo, ele é aberto com o gedit. Não consigo executá-lo diretamente clicando.

O que fazer?



4
@kasperd Digitar python3na linha de comando com um argumento é uma excelente maneira de executar scripts python. É, de facto, a melhor maneira de executar um programa que requer um terminal e argumentos (como muitos dos meus próprios scripts, mas também programas como mercurial, sphinx). Gostaria de explicar por que o que venho fazendo há mais de 20 anos não é o caminho certo?
Anthon

3
@kasperd Um script Python (ou programa) escrito correto não precisa ter uma linha shebang. Caso contrário, ainda é um script Python em todos os aspectos. Esse script simplesmente não pode ser executado a partir dos shells do Linux na forma abreviada que você parece preferir. Também existem ambientes que não exigem que os scripts Python tenham uma linha shebang e permitam que eles iniciem o script clicando duas vezes.
Anthon

1
@kasperd O que o kernel precisa para que um script Python seja executado ./scriptnamenão valida sua afirmação de que a execução de um script a partir da linha de comando usando python3. Existem diferentes maneiras de executar scripts python e fazer python3 ./mnik.pytambém é uma maneira adequada de fazer as coisas, é apenas diferente (e pelo menos você obtém python3 dessa maneira e não python2, pois é mais provável que haja mais respostas até agora)
Anthon

1
Usar <language> <script> é uma maneira totalmente válida e aceita de executar um script. Sugerir que é uma má prática deve ser desaprovado.
Jacob Vlijm

Respostas:


26

Há duas coisas necessárias.

  1. Um script deve ter uma #!linha informando o SO que intérprete usar. No seu caso, sua primeira linha no código deve ser#!/usr/bin/env python3
  2. Você precisa abrir o gerenciador de arquivos, vá em Editar -> Preferências -> Comportamento e selecione o que fazer com os arquivos executáveis

    insira a descrição da imagem aqui

    1. Por fim, verifique se o arquivo em si realmente tem permissões de executável definidas. No terminal você pode fazerchmod +x /path/to/script.py e na GUI, clique com o botão direito do mouse no arquivo e altere suas Propriedades -> Permissões

    insira a descrição da imagem aqui

    insira a descrição da imagem aqui

Nota sobre a linha shebang

A primeira linha é chamada linha shebang e deve começar com #!; o que vem a seguir é o nome do intérprete que lerá seu código. Caso esteja usando, python3você pode usar uma #!/usr/bin/python3ou outra #!/usr/bin/env python3para portabilidade. Se você não estiver usando um código específico para a versão python - basta usar#!/usr/bin/env python

Nota sobre a saída do script:

Se o seu script imprimir a saída no console, ele precisará ter uma janela de terminal ou, alternativamente, usar diálogos da GUI, como zenity. Prefira usarRun in Terminal opção se você quiser ver o código. Se você deseja que o script faça algo sem ver a saída do console - use a Runopção

insira a descrição da imagem aqui

Além disso, se você tiver parâmetros de linha de comando, como sys.argv[1]no script, não poderá defini-los a menos que tenha a janela do terminal aberta.


1
@PriyadarshiPaul É o mesmo que o Filesprograma do iniciador. No Windows-speak que seria explorador de arquivos ouMy Computer
Sergiy Kolodyazhnyy 23/04

@PriyadarshiPaul está nautilusno Terminal
grooveplex


3
#!/usr/bin/env pythoninvocará o Python2 na maioria dos sistemas Ubuntu. Embora você possa tornar um script Python escrito para Python3 compatível com Python2, eu não assumiria que o OP o fez. #!/usr/bin/env python3parece um shebang mais apropriado
Anthon

1
E por que estamos trazendo o Arch Linux aqui? Talvez eu pareça um pouco malvado, mas estamos falando do Ubuntu aqui. No Ubuntu, por padrão, o python está vinculado ao python2.7. Se você estiver desenvolvendo software, provavelmente deve estar ciente de quais links estão disponíveis; se você usa algo diferente da versão padrão do seu sistema operacional, especifique-o explicitamente. Claro, podemos atender a cada pergunta individual, mas, pelo menos, se você codificar, faça o que é certo.
Sergiy Kolodyazhnyy

3

Você precisa colocar o local do programa para executar seu código na primeira linha e, em seguida, definir o script para ser executado como um executável alterando suas permissões. Isso pressupõe que você esteja iniciando seus aplicativos a partir do terminal ou de outro script.

Encontre sua instalação do Python

$ which python
/usr/bin/python

Adicione a localização dos programas à linha superior do seu programa com um #!na frente

#!/usr/bin/python

# Python code goes here....

Defina o script Python para ter direitos de execução

$ chmod 700 test.py

Agora você pode executar o script diretamente

$ ./test.py

Listagem de código para test.py

#!/usr/bin/python

print "test"

2

Se você deseja executar este programa sem digitar, python3 mnik.pyé necessário tornar o script executável e garantir que ele python3seja usado para executá-lo.

O primeiro que você pode fazer executando

 chmod +x mnik.py

o segundo que você pode fazer adicionando como primeira linha de um script uma linha shebang que chama python3 . Em todos os sistemas Ubuntu com os quais trabalhei que vêm com o python3, você pode obter o python3 adicionando esta linha no topo:

#!/usr/bin/env python3

Após essas duas mudanças que você pode digitar /path/to/mnik.py, ./mnik.pyou apenasmnik.py (o último requer que o script esteja no seu CAMINHO).

Se você fizer essas alterações, você também pode querer considerar renomear mnik.pya mnik, que é uma prática comum com pacotes Python com comandos que são publicados em PyPI.


ok, Qualquer um destes agora não funciona
Priyadarshi Paul

O que está bem"? A que "estes" se referem?
Anthon

É dizer ** usr / bin / env: mau intérprete: Nenhum tal lima ou diretório **
Priyadarshi Paul

Há pelo menos uma /falta na frente lá. Por favor, explique o que "It" está no seu comentário. É o shell bash? É o Command.com do Windows? Pelo que você está chamando o programa e com qual sintaxe da linha de comando?
Anthon
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.