Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

2
respostas

[Dúvida] Projeto no dbt não foi inicializado!

Terminei a Aula 01: Introdução e preparação do ambiente do curso Engenharia de Dados: dbt - Transformações Modernas de Dados. Na Aula 02, já começa rodando o comando dbt init dbt_curso, mas, a seguinte mensagem de erro ocorre:

PS C:\dbt\projeto> dbt init dbt_curso
dbt : O termo 'dbt' 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
+ dbt init dbt_curso
+ ~~~
    + CategoryInfo          : ObjectNotFound: (dbt:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundExceptio

Em nenhum momento, mostrou como instalar o dbt!

2 respostas

Com a doc do dbt, eu consegui resolver... Intalando o dbt em ambiente virtual!

Olá, Enzo. Como vai?

Que excelente que você conseguiu contornar o problema consultando diretamente a documentação oficial e criando um ambiente virtual! Essa proatividade e capacidade de ler documentações são o verdadeiro diferencial de um bom Engenheiro de Dados.

Para que a sua resposta no fórum fique ainda mais completa e sirva como um guia definitivo para outros colegas que passarem pelo mesmo erro no Windows (PowerShell), vale a pena detalharmos o porquê desse erro acontecer e como a sua solução com o ambiente virtual previne problemas futuros.


O Porquê do Erro: CommandNotFoundException

A mensagem do PowerShell indica que o sistema operacional tentou procurar um programa chamado dbt.exe dentro das pastas do seu computador e não encontrou nada.

Geralmente, nas aulas iniciais de preparação de ambiente, o dbt pode ser pré-instalado pelo instrutor em uma máquina virtual externa ou os comandos de instalação acabam passando batidos. No ecossistema Python, quando instalamos pacotes globalmente ou esquecemos de configurar as Variáveis de Ambiente (PATH) do Windows, o terminal não consegue reconhecer o comando diretamente.


Por que a sua solução (Ambiente Virtual) é a melhor prática?

Instalar o dbt dentro de um ambiente virtual (como o venv do Python) é a regra de ouro na Engenharia de Dados profissional.

Quando trabalhamos com ferramentas de engenharia de dados, a arquitetura do ecossistema de bibliotecas funciona assim:

  • Isolamento de Versões: O dbt muda e evolui com muita frequência. Se você instalar o dbt globalmente no seu computador e, daqui a alguns meses, pegar um projeto legado que usa uma versão antiga, o seu ambiente vai quebrar. O ambiente virtual cria uma "caixa isolada" para o seu curso.
  • Gerenciamento de Drivers (Adapters): O dbt precisa de conectores específicos para falar com os bancos de dados (como dbt-postgres, dbt-snowflake ou dbt-bigquery). Instalando no ambiente virtual, você garante que esses drivers fiquem instalados apenas dentro do escopo do projeto atual.

O Guia Passo a Passo (Para consolidar no Fórum)

Para ajudar quem cair no seu tópico, o fluxo padrão que você executou para dar vida ao comando dbt init no Windows resume-se nestes passos dentro da pasta do projeto:

# 1. Criar o ambiente virtual (geralmente chamado de venv)
python -m venv venv

# 2. Ativar o ambiente virtual no PowerShell
.\venv\Scripts\Activate.ps1

# 3. Atualizar o gerenciador de pacotes pip
python -m pip install --upgrade pip

# 4. Instalar o dbt-core e o conector do banco de dados (ex: Postgres)
pip install dbt-core dbt-postgres

# 5. Agora o terminal reconhece o comando!
dbt init dbt_curso

Dica de ouro para o Windows: Se ao tentar rodar o script de ativação (Activate.ps1) o PowerShell der um erro de permissão bloqueada, basta rodar o comando Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process antes de ativar.

Sua atitude de buscar a solução na documentação e compartilhar que deu certo ajuda muito a comunidade Alura. Parabéns pela postura de Engenheiro de Dados!

Espero que possa ter lhe ajudado!