Ambientes virtuais em Python (venv
)#
Linguagens de Programação e Bibliotecas (pacotes) evoluem ao longo do tempo. É muito importante que esta evolução aconteça, pois assim os grupos responsáveis pelas linguagens de programação e pacotes podem ir adionando novas funcionalidades e resolvendo bugs nos mesmos. A forma normalmente empregada para controlar esta evolução tecnológica é através da criação de versões para as linguagens de programação e bibliotecas. Por isso que temos Python 2, Python 3.9, e assim por diante.
No entanto, um efeito colateral desta evolução é que algo que pode funcionar na versão 1 da biblioteca X pode não funcionar na versão 2 da mesma biblioteca.
Imagina o que acontecerá com os seus programas antigos quando você atualizar a versão do Python no seu computador para uma versão mais recente que muda um comportamento ou remove uma função que você utilizava no projeto?

O exemplo da versão do Python é um pouco mais drástico, mas e quanto às inúmeras bibliotecas/pacotes que você utiliza em cada projeto? Durante a graduação, os projetos são, na grande maioria, abandonados assim que você acaba o semestre. No mercado de trabalho você não poderá se dar a esse luxo: projetos antigos são em geral mantidos por bastante tempo.
Para resolver esse (e outros) problema, foram criados os ambientes virtuais (venv
) do Python. Ele cria uma "nova instalação" do Python exclusiva para o seu projeto e os pacotes são instalados apenas nesse ambiente. Ou seja, quando você muda de projeto, basta mudar de ambiente virtual para usar uma instalação diferente, com um conjunto diferente de pacotes.
Outras linguagens de programação
Todas as grandes linguagens de programação atuais possuem algum tipo de ferramenta desse tipo (algumas melhores, algumas piores). Por exemplo, o NodeJS, não apenas faz o controle dos pacotes específicos de cada projeto, mas também avisa o desenvolvedor quando existe uma versão mais recente desses pacotes e sugere a atualização.
Criando um ambiente virtual#
Para criar um ambiente virtual (venv
), utilize o comando:
python3 -m venv NOME_DA_PASTA_DO_VENV
É comum utilizarmos nomes como env
ou .env
para o NOME_DA_PASTA_DO_VENV
. Nesta disciplina, vamos padronizar o uso do nome env
. Assim, o comando seria:
python3 -m venv env
Se o comando acima não funcionar
Caso o comando acima não funcione, tente o seguinte comando:
python -m venv env
Esse comando vai criar uma pasta chamada env
dentro da pasta onde ele foi executado. Todos os arquivos necessários estarão dentro da pasta env
.

Apagando um venv
Se você não precisar mais do seu ambiente virtual (ou tiver criado no lugar errado), basta apagar a pasta env
.
Ativando um ambiente virtual#

Será necessário ativar o ambiente virtual toda vez que você for trabalhar com ele. No começo isso pode parecer um pouco maçante, mas é apenas um comando e você logo vai se acostumar:
$ env\Scripts\activate.bat
$ source env/bin/activate
Importante
Se você utilizar um nome diferente de env
para o seu ambiente virtual, lembre-se de substituí-lo no comando acima. Por exemplo: se o seu ambiente virtual se chama meu-ambiente
, o comando será source meu-ambiente/bin/activate
(ou meu-ambiente\Scripts\activate.bat
, no Windows).
Pronto! Agora quando você utilizar o Python nesse terminal, será utilizada a versão do ambiente virtual.
Importante
Os comandos acima ativam o ambiente virtual para aquela instância do terminal. Ou seja, se você abrir outro terminal, mesmo que seja na mesma pasta, você estará utilizando o Python do sistema.
Garantindo que você está no venv correto no vscode#
Provavelmente, neste momento do curso você já percebeu como é bom trabalhar com um editor estilo Visual Studio Code e você deve estar fazendo boa parte das suas atividades no mesmo. Sendo assim, também é importante você saber identificar qual é o venv que está habilitado no vscode. Vai que, por algum motivo, você não está usando o venv correto!
Quando você abre a pasta de um projeto no vscode:

ele já identifica se existe ou não uma pasta de virtual environment dentro do projeto. E você pode visualizar se é o venv correto ou não olhando no canto inferior esquerdo do vscode:

Se não estiver correto então você pode clicar em cima do texto "Python..."
e selecionar outro ambiente virtual, como apresentado na figura abaixo:

Outra coisa importante que você precisa prestar atenção é com relação ao terminal no vscode. Você precisa ter certeza que o ambiente virtual foi carregado da mesma forma que usando um terminal comum:

Se o nome do ambiente virtual não aparecer no prompt do terminal então você precisa fazer a carga da mesma forma que faria em um terminal comum:
$ env\Scripts\activate.bat
$ source env/bin/activate