Executando script python a partir do terminal sem extensão .py
14
Eu quero chamar um script python script.py do terminal simplesmente digitando script . Isso é possível? Se sim, como?
Eu sei que posso evitar digitar python script.py adicionando #! / Usr / bin / env python na parte superior do script, mas ainda preciso adicionar o sufixo .py para executar o script.
Os sistemas de arquivos Unix / Linux não dependem de extensões como o Windows. Você não precisa do .pyfinal de um arquivo para executá-lo.
Você pode executar o arquivo chamando-o com o intérprete:
python ScriptFile
Ou marcando-o como executável e definindo o intérprete na primeira linha (por exemplo #!/usr/bin/python).
Se você não conseguir executar o arquivo com:
/Path/to/ScriptFile
verifique as permissões com
ls -l ScriptFile
Pode ser necessário adicionar o sinalizador executável e chmodele será executado para você.
Se você estiver usando scripts personalizados regularmente, convém garantir que o diretório que você os armazena seja adicionado à PATHvariável de ambiente.
O arquivo está em ~ / workspace / python. Adicionei ~ / workspace / python no meu caminho, executei o sudo chmod a + x script.py "e adicionei a linha shebang (#! / Usr / bin / env python) na parte superior do script . Eu posso executar o script digitando * script.py , mas apenas digitando roteiro não funciona.
jmau5
2
No unix / linux, tudo é um arquivo e responde ao seu nome de arquivo. Você não pode chamar Script.py como script. Tente renomear o arquivo de script.py para script e ele deve corrigir seu problema.
28411 Patrick
Desculpe, eu não entendi! Tudo resolvido, obrigado!
jmau5
5
A .pyextensão é desnecessária para executar o script. Você só precisa tornar o script executável (por exemplo, executando chmod a+x script) e adicionar a linha shebang ( #!/usr/bin/env python).
Como opção, você pode criar um invólucro para o seu script (um .pyarquivo):
Por exemplo, você tem um script runme.pypara poder criar um novo arquivo runmepara quebrar o script:
#!/usr/bin/env pythonimport runme
e chame a runme.pyfuncionalidade apenas chamando runmeno shell.
Isso é útil para scripts multiplataforma, pois na plataforma Windows você pode atribuir .pyarquivos a serem chamados apenas pelo nome, sem extensão e shebang no cabeçalho, mas na plataforma linux, não é possível e, assim, o wrapper sai.
A
.py
extensão é desnecessária para executar o script. Você só precisa tornar o script executável (por exemplo, executandochmod a+x script
) e adicionar a linha shebang (#!/usr/bin/env python
).fonte
Como opção, você pode criar um invólucro para o seu script (um
.py
arquivo):Por exemplo, você tem um script
runme.py
para poder criar um novo arquivorunme
para quebrar o script:e chame a
runme.py
funcionalidade apenas chamandorunme
no shell.Isso é útil para scripts multiplataforma, pois na plataforma Windows você pode atribuir
.py
arquivos a serem chamados apenas pelo nome, sem extensão e shebang no cabeçalho, mas na plataforma linux, não é possível e, assim, o wrapper sai.fonte