Preparing your experience...

Carregamento Rápido de venv Python — Local, Depois Global

— 2 min de leitura

Alternar entre projetos Python deveria ser instantâneo. O padrão abaixo te dá essa velocidade com um único comando: verifique se existe um .venv local no diretório atual e faça fallback para um ~/.venv global se nenhum existir localmente.

Nota: Este guia cobre macOS e Linux (bash / zsh). Windows usa Scripts\activate em vez de bin/activate, e os caminhos usam \ ao invés de /. Adapte a função conforme necessário ou execute-a no Git Bash / WSL onde o bash está disponível.

A função

Adicione isto ao seu ~/.bashrc (ou ~/.zshrc):

pyon() {
    if [ -f "./.venv/bin/activate" ]; then
        source "./.venv/bin/activate"
    elif [ -f "$HOME/.venv/bin/activate" ]; then
        source "$HOME/.venv/bin/activate"
    else
        echo "pyon: no venv found in ./.venv or ~/.venv" >&2
        return 1
    fi
}

Depois recarregue sua configuração de shell com source ~/.bashrc e está pronto.

Como funciona

Execute pyon a partir de qualquer diretório. A função verifica dois locais em ordem:

  1. Local: .venv/bin/activate — o ambiente virtual específico do projeto, criado com python3 -m venv .venv.
  2. Global: ~/.venv/bin/activate — seu ambiente universal pessoal para projetos que não incluem seu próprio venv.

Se nenhum existir, ele imprime um erro e sai com código 1 para que você saiba imediatamente que algo está errado.

Criar o venv global

Para projetos sem um ambiente virtual local, configure uma única vez um global:

python3 -m venv ~/.venv

Depois execute pyon em qualquer diretório de projeto — ele ativará automaticamente esse ambiente compartilhado.

Cuidado: Se você criar um novo .venv local dentro de um projeto que antes usava o global, lembre-se de executar pyon novamente a partir do diretório do projeto. A função é resolvida no momento da chamada, não na inicialização do shell.

Por que isso supera o sourcing manual

A abordagem tradicional consiste em memorizar e digitar o caminho completo toda vez:

source my-project/.venv/bin/activate

Isso falha assim que você muda de diretório ou trabalha com múltiplos projetos. Com pyon, você digita uma única palavra — independente de onde esteja — e ela encontra o ambiente correto para você. Também funciona em subdiretórios, que é como a maioria dos desenvolvedores navega pelas pastas de projeto de qualquer forma.

Desativar

Como com qualquer ambiente virtual, saia com:

deactivate

Isso restaura seu shell para o Python do sistema. A função pyon em si não interfere no deactivate.

TenolifeTENOLIFE