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?
python3
na 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 comomercurial
,sphinx
). Gostaria de explicar por que o que venho fazendo há mais de 20 anos não é o caminho certo?./scriptname
não valida sua afirmação de que a execução de um script a partir da linha de comando usandopython3
. Existem diferentes maneiras de executar scripts python e fazerpython3 ./mnik.py
també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)Respostas:
Há duas coisas necessárias.
#!
linha informando o SO que intérprete usar. No seu caso, sua primeira linha no código deve ser#!/usr/bin/env python3
Você precisa abrir o gerenciador de arquivos, vá em Editar -> Preferências -> Comportamento e selecione o que fazer com os arquivos executáveis
chmod +x /path/to/script.py
e na GUI, clique com o botão direito do mouse no arquivo e altere suas Propriedades -> PermissõesA 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,python3
você pode usar uma#!/usr/bin/python3
ou outra#!/usr/bin/env python3
para 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 aRun
opçãoAlé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.fonte
Files
programa do iniciador. No Windows-speak que seria explorador de arquivos ouMy Computer
nautilus
no Terminal#!
(shebang) em scripts Python, e qual a forma que ela deve assumir?#!/usr/bin/env python
invocará 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 python3
parece um shebang mais apropriadoVocê 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
Adicione a localização dos programas à linha superior do seu programa com um
#!
na frenteDefina o script Python para ter direitos de execução
Agora você pode executar o script diretamente
Listagem de código para test.py
fonte
Se você deseja executar este programa sem digitar,
python3 mnik.py
é necessário tornar o script executável e garantir que elepython3
seja usado para executá-lo.O primeiro que você pode fazer executando
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:
Após essas duas mudanças que você pode digitar
/path/to/mnik.py
,./mnik.py
ou 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.py
amnik
, que é uma prática comum com pacotes Python com comandos que são publicados em PyPI.fonte
/
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?