venv vs virtualenv: Qual Isolamento Python?
venv vem com a biblioteca padrão do Python; virtualenv é uma ferramenta de terceiros mais rápida e com mais recursos que também suporta Pythons mais antigos.
venv é embutido no Python 3.3+ e é a forma padrão de criar ambientes isolados sem instalação extra. virtualenv o antecede, cria ambientes mais rápido, suporta Python 2 e 3.x mais antigos, e oferece mais configuração e um sistema de plugins. Para projetos modernos em um único Python recente, venv é suficiente; virtualenv se justifica por velocidade, versões legadas ou recursos avançados.
| venv | virtualenv | |
|---|---|---|
| Incluso | Sim (stdlib) | pip install |
| Velocidade | Boa | Criação mais rápida |
| Versões do Python | 3.3+ | 2.7 e 3.x |
| Recursos | Mínimos | Mais opções, plugins |
| Melhor para | Versão única moderna | Velocidade, legado, uso avançado |
No CI
venv não precisa de nada extra e funciona em todo lugar onde o Python moderno roda, então é a escolha de CI mais simples. virtualenv cria ambientes um pouco mais rápido e só é necessário se você mira Pythons antigos ou quer seus recursos extras. A maioria dos pipelines usa venv e nunca percebe a diferença.
Acelere
Faça cache da instalação de dependências (pip cache + lockfile) em vez do próprio diretório do ambiente. Qualquer uma das ferramentas roda em CI runners; runners gerenciados mais rápidos encurtam os passos de instalação e teste.
O veredito
Projetos modernos em um Python recente: venv, já que é embutido e não precisa de nada extra. virtualenv quando você precisa de criação mais rápida, suporte a Python 2 ou 3.x antigo, ou seu conjunto de recursos mais rico. Para a maioria dos times, venv é o padrão mais simples.