Guia Rápido de Python venv

alguns comandos úteis de venv

Conteúdo da página

Venv é uma ferramenta de linha de comando para gerenciamento de ambientes virtuais. Um muito mais simples, comparado ao Anaconda. Aqui estão alguns comandos úteis do venv.

Um python está tentando abrir uma caixa de madeira.

Folha de Dicas do Python venv

Criar um Ambiente Virtual

  • Comando padrão (Python 3.3+):

    python -m venv venv
    

    Isso cria um ambiente virtual chamado venv no seu diretório atual.

  • Com uma versão específica do Python (se instalada):

    python3.10 -m venv venv
    

    ou usando virtualenv:

    virtualenv -p /usr/local/bin/python3.10 venv
    

    (Requer o pacote virtualenv).

Ativar o Ambiente Virtual

  • No Windows:
    .\venv\Scripts\activate
    
  • No macOS/Linux:
    source venv/bin/activate
    
    O prompt do shell agora deve mostrar o nome do ambiente.

Desativar o Ambiente Virtual

  • Em todos os sistemas:
    deactivate
    
    Isso o retorna ao Python do sistema.

Instalar Pacotes

  • Com pip:
    pip install
    
    Exemplo:
    pip install numpy pandas
    
  • Atualizar pip (recomendado):
    python -m pip install --upgrade pip
    

Congelar e Exportar Requisitos

  • Salvar os pacotes do ambiente atual:
    pip freeze > requirements.txt
    
  • Instalar a partir do arquivo de requisitos:
    pip install -r requirements.txt
    
    Certifique-se de que o ambiente virtual esteja ativado antes de executar esses comandos.

Remover um Ambiente Virtual

deactivate
rm -rf <env path>

Armadilhas Comuns ao Gerenciar Ambientes Virtuais do Python

Esquecer de Ativar o Ambiente Virtual

  • Um erro comum é executar comandos sem ativar o ambiente virtual desejado, resultando na instalação de pacotes no ambiente global ou no ambiente errado. Isso pode causar conflitos de dependência e comportamento imprevisível.

Não Fixar Versões de Pacotes

  • Usar especificadores de versão soltos (como >= em vez de ==) no requirements.txt compromete a reprodutibilidade. Fixar versões exatas garante que todos os que trabalham no projeto usem as mesmas versões de pacotes, evitando problemas inesperados durante a implantação ou colaboração.

Misturar Ambientes Globais e Virtuais

  • Instalar pacotes globalmente ou misturar ambientes globais e virtuais pode causar conflitos, especialmente se diferentes projetos exigirem versões incompatíveis de pacotes. Sempre certifique-se de estar operando no ambiente correto.

Incluir Ambientes Virtuais no Controle de Versão

  • Incluir a pasta do ambiente virtual (por exemplo, venv/) no controle de versão aumenta o tamanho dos repositórios e é desnecessário. Sempre adicione diretórios de venv ao .gitignore para manter seu repositório limpo.

Ignorar a Separação entre Dependências de Desenvolvimento e Produção

  • Falhar em distinguir entre dependências de desenvolvimento e produção pode resultar em implantações inchadas ou inseguras. Use arquivos de requisitos separados ou seções de configuração para cada.

Falta de Documentação e Automação

  • Não documentar os passos de configuração do ambiente ou falhar em automatizar o processo (com scripts ou Makefiles) dificulta a onboarding de novos contribuidores e a reprodução de ambientes.

Não Limpar Ambientes Antigos com Regularidade

  • Com o tempo, ambientes virtuais não utilizados podem se acumular, desperdiçando espaço em disco e causando confusão. Remova regularmente ambientes obsoletos para manter um workspace limpo.

Ignorar Limites do Python e Gerenciador de Pacotes do Sistema

  • Modificar o Python do sistema ou misturar gerenciadores de pacotes do sistema com o pip pode quebrar ferramentas do sistema e introduzir problemas difíceis de diagnosticar. Sempre use venvs para dependências de projetos e evite interferir em pacotes gerenciados pelo sistema.

Tabela de Resumo

Armadilha Impacto
Esquecer de ativar o venv Instala pacotes no ambiente errado
Não fixar versões de pacotes Builds imprevisíveis, bugs difíceis de reproduzir
Misturar ambientes globais e virtuais Conflitos de dependência/versão
Incluir diretórios de venv no controle de versão Repositórios inchados, desorganizados
Não separar dependências de desenvolvimento e produção Implantações inchadas/inseguras
Falta de documentação/automação Dificuldade no onboarding, configurações inconsistentes
Não limpar ambientes antigos Perda de espaço em disco, confusão
Modificar Python do sistema ou pacotes Instabilidade do sistema, ferramentas quebradas

Seguir as melhores práticas, como sempre ativar seu venv, fixar dependências, separar ambientes e manter documentação clara, pode ajudá-lo a evitar essas armadilhas comuns.

Principais Diferenças Entre Conda e Ambientes Virtuais para Reprodutibilidade

Funcionalidade Ambientes Conda Ambientes Virtuais do Python (venv/virtualenv)
Escopo de Gerenciamento Gerencia pacotes Python e dependências não-Python (ex: bibliotecas do sistema, compiladores) Gerencia apenas pacotes Python via pip
Controle de Versão do Python Pode especificar e instalar qualquer versão do Python por ambiente Usa a versão do Python instalada no sistema
Consistência entre Plataformas Mais consistente entre diferentes OS (Windows, macOS, Linux) devido ao gerenciamento de todas as dependências Depende de bibliotecas do sistema, que podem variar por OS
Fontes de Pacotes Usa repositórios Conda (binários pré-compilados, pilha científica) Usa PyPI (pip) para pacotes Python
Reprodutibilidade Maior para projetos complexos, científicos ou multilíngua; pode exportar o ambiente completo (conda env export) Boa para projetos puramente Python; pode faltar reprodutibilidade se dependências do sistema estiverem envolvidas
Dependências Não-Python Pode instalar e gerenciar (ex: OpenBLAS, libpng) Não pode gerenciar; deve ser instalado separadamente
Exportação/Importação de Ambiente conda env export / conda env create para reprodutibilidade total pip freeze > requirements.txt / pip install -r requirements.txt (apenas pacotes Python)
Desempenho Mais rápido e confiável para pacotes científicos grandes (ex: numpy, pandas) Pode exigir compilação a partir do código-fonte, especialmente no Windows
Complexidade Slightly higher setup and management overhead Leve, excelente para projetos básicos de Python

Resumo dos Pontos Principais

  • Ambientes Conda são ideais para reprodutibilidade em projetos que exigem tanto pacotes Python quanto dependências não-Python, ou quando a replicação exata entre plataformas é crítica. O Conda gerencia toda a pilha, incluindo o próprio Python, bibliotecas e até compiladores, tornando mais fácil compartilhar e reproduzir ambientes complexos, especialmente em contextos de ciência de dados e pesquisa.

  • Ambientes virtuais do Python (venv/virtualenv) são leves e excelentes para isolar dependências Python em projetos puramente Python. No entanto, eles não gerenciam dependências de nível do sistema ou não-Python, então a reprodutibilidade pode ser comprometida se seu projeto depender de bibliotecas externas ou configurações específicas do sistema.

  • Exportar e compartilhar ambientes: O Conda permite exportar uma especificação completa do ambiente (conda env export), incluindo todas as dependências e suas versões, que podem ser recriadas exatamente em outro lugar. Com ambientes virtuais, pip freeze captura apenas pacotes Python, não dependências do sistema ou a versão do interpretador Python.

  • Conclusão
    Use Conda para máxima reprodutibilidade em projetos científicos, multiplataforma ou projetos complexos. Use ambientes virtuais do Python para projetos leves e puramente Python onde dependências do sistema não são uma preocupação.