1
resposta

"Não é reconhecido como nome de cmdlet" ao tentar executar "app.py" direto no Terminal

Estava com o problema de não conseguir mais executar direto pelo terminal ao digitar no Windows: "app.py" que surgia a seguinte mensagem de erro:

\Área de Trabalho\sabor-express> app.py
app.py : O termo 'app.py' não é reconhecido como nome de cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho tiver sido incluído, veja se o caminho está correto e tente  
novamente.
No linha:1 caractere:1
+ app.py
+ ~~~~~~
    + CategoryInfo          : ObjectNotFound: (app.py:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 

Suggestion [3,General]: O comando app.py não foi encontrado, mas existe no local atual. Por padrão, o Windows PowerShell não carrega comandos do local atual. Se você confia nesse comando, digite: ".\app.py". Consulte "get-help about_Command_Precedence" para obter mais detalhes.

Ao realizar pesquisa própria por meio de livros, encontrei que esse erro estava acontecendo devido ao PowerShell não executar scripts do diretório atual automaticamente por segurança.
E para a execução direto pelo terminal, sem a necessidade de apertar no comando " > Run Python File", a solução foi usar o novo código:

python app.py
Ao colocar esse comando no terminal, a execução ocorreu normalmente.

Não sei se existe algum motivo para o terminal não executar diretamente agora como fazia no início, ou se estou seguindo a melhor forma de código limpo para a execução da aplicação.

Se houverem mais explicações do motivo do acontecido ou formas de resoluções mais adequadas, gostaria de aprender.
Obrigada!

1 resposta

Oii, Francielle!

É muito comum passar por esse estranhamento quando começamos a utilizar o terminal, especialmente no Windows com o PowerShell. Sua descoberta sobre o comando python app.py está corretíssima e, na verdade, essa é a forma padrão e mais segura de trabalhar.

Vou explicar os motivos técnicos desse comportamento e por que sua solução é a mais adequada.

Por que o erro acontece?

O terminal (PowerShell) funciona como um intérprete que busca comandos em uma lista de pastas pré-definidas no sistema. Quando você digita apenas app.py, o Windows tenta encontrar um programa ou "cmdlet" com esse nome exato.

Existem dois motivos principais para a mensagem de erro:

  1. Segurança do powerShell: Por padrão, o PowerShell não executa arquivos que estão na pasta atual apenas pelo nome. Isso evita que você execute um arquivo malicioso por acidente. Para rodar algo do diretório atual, ele exige o prefixo .\ (ex: .\app.py).
  2. Associação de arquivos: Ao digitar apenas o nome do arquivo, o Windows depende da associação de extensões (saber que .py deve ser aberto pelo python.exe). Se essa associação não estiver configurada no ambiente do terminal, ele não saberá o que fazer.

Por que usar "python app.py" é melhor?

Utilizar python app.py é a prática recomendada por vários motivos:

  • Clareza: Você está dizendo explicitamente ao computador: "Use o programa Python para ler e executar este arquivo".
  • Múltiplas versões: Se você tiver mais de uma versão do Python instalada, pode especificar qual usar (ex: python3 app.py ou py -3.12 app.py).
  • Ambientes virtuais: Quando você começar a usar ambientes virtuais (venv), o comando python garantirá que o script use as bibliotecas instaladas naquela pasta específica, e não as do sistema global.

A forma que você encontrou é a maneira profissional de trabalhar. No desenvolvimento de software, ser explícito é sempre uma vantagem. Ao digitar python app.py, você evita ambiguidades e garante que o código rode da mesma forma em outros computadores ou servidores.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!