Como usar Ambientes Virtuais em Python — Parte 2 (incluindo VS Code)
Se você trabalha com programação em Python, sabe o quão poderosos e versáteis são os pacotes, também chamados de bibliotecas, disponíveis para essa linguagem. E se trabalha com diversos projetos na mesma máquina (e a resposta provavelmente é “sim”), é fundamental aprender a utilizar ambientes virtuais, uma ferramenta que permite criar ambientes isolados para cada projeto, evitando conflitos de pacotes e facilitando a reprodutibilidade do código.
Na Parte 1 deste artigo abordamos os conceitos básicos sobre ambientes virtuais e as necessidades de utilizá-los.
Nesta Parte 2 explicamos o passo a passo para implementar ambientes virtuais em Python e utilizá-los tanto em linha de comando quanto no VS Code.
Gerenciamento de ambientes e de pacotes
Como falamos na Parte 1, existem várias formas de se trabalhar com ambientes virtuais em Python, e a que eu achei mais eficiente foi a seguinte:
- Conda para gerenciar ambientes virtuais
- Pip para gerenciar pacotes dentro dos ambientes
O Conda tem um sistema de gerenciamento de ambientes virtuais muito bom. Já o Pip tem o maior e mais atualizado repositório de pacotes para Python.
Eu editei a Parte 1 do artigo para falar de algumas soluções alternativas e explicar o motivo de não tê-las adotado.
Conda < Miniconda < Anaconda
Antes de falar da instalação do Conda, vamos definir melhor algumas coisas:
Conda
É o gerenciador de pacotes e ambientes virtuais open-source.
Anaconda
Existe uma confusão sobre a diferenciação do Anaconda e o Conda, e a tendência de achar que são a mesma coisa. Para começar a explicar a confusão, existe a empresa Anaconda e o Anaconda distribuição de Python. A empresa Anaconda é responsável pelo Anaconda distribuição de Python, pelo Conda, por um repositório de pacotes de Python e por outros softwares que levam a marca Anaconda.
O Anaconda é uma distribuição de Python e R com foco em Ciência de Dados. Essa distribuição já inclui o Conda, o Anaconda Navigator, e mais 250 pacotes relacionados à Ciência de Dados. Isso resulta em mais de 3GB de espaço em disco para a instalação, o que é desnecessário mesmo para usos que de aplicação intensa em Ciência de Dados. Mesmo para quem pretende utilizar pacotes de Ciência de Dados eu recomendo usar o Miniconda, e instalar em cada ambiente virtual apenas os pacotes que tiver necessidade.
Miniconda
O Miniconda é uma versão resumida (bem resumida) do Anaconda, um pacote de instalação mínima do Conda. Ele inclui apenas uma versão do Python, o Conda, alguns pacotes dos quais eles dependem, e alguns pacotes utilitários, como zip
e pip
(sim, o mesmo pip
que usaremos para gerenciamento de pacotes).
Quem distribui o Miniconda é a empresa Anaconda, a mesma responsável pelo Anaconda distribuição de Python. Por isso você verá no software de instalação do Miniconda o logo do Anaconda.
Instalação do Miniconda
No site de documentação do Miniconda localize a sessão com os instaladores mais recentes para seu sistema operacional, faça download e o execute.
Os exemplos a seguir considerarão que a instalação é em uma máquina com Windows 11.
Possivelmente você vai querer fazer a instalação apenas para você, e não para todos os usuários da máquina que está usando.
Também é recomendável seguir as configurações sugeridas da instalação, como,
- Diretório de instalação:
- Não adicionar ao PATH:
- Não registrar o Python da instalação como Python padrão (apesar de estar escrito “recommended”, se você já tiver uma instalação do Python na máquina isso pode gerar algum conflito.
Aqui todas as opções finais selecionadas:
Agora você já terá o Conda instalado pelo Miniconda!
No “Iniciar” o Windows mostrará dois novos aplicativos CLI (Command-Line Interface) disponíveis, o “Anaconda Prompt (miniconda3)” e o “Anaconda Powershell Prompt (miniconda3)”.
Usando Ambientes Virtuais
Ao abrir um dos dois aplicativos CLI, Anaconda Prompt ou Anaconda Powershell Prompt, você verá uma janela de linha de comando com uma indicação logo no início do prompt escrito (base)
.
(base)
base é seu ambiente padrão do Conda. A regra de ouro é: não instale nenhum pacote nem modifique seu ambiente base. Você está usando o Conda justamente para ter diversos ambientes isolados, como vimos na Parte 1, e se a instalação ou desinstalação de algum pacote causar conflito, você pode apagar o ambiente e criar outro. Mas se causar algum problema no seu base será mais difícil resolver (eu precisei desinstalar o Conda, com todos os ambientes que eu já tinha, e instalar tudo novamente).
Com o comando abaixo você pode verificar qual é a versão de Python que ele está usando:
python --version
O Conda User Guide tem uma seção de “Managing environments” bem completa e é lá que eu tiro dúvidas sempre que preciso, mas vou explicar aqui os comandos básicos para criar ambientes e trocar entre eles.
Criação de um ambiente virtual
Para criar um ambiente virtual com o nome play
:
conda create --name play
Este comando criará o ambiente e trará a explicação como “entrar” e “sair” dele:
# To activate this environment, use
# $ conda activate play
#
# To deactivate an active environment, use
# $ conda deactivate
Navegando entre ambientes
Agora podemos entrar no ambiente play
:
conda activate play
Repare que agora o início do prompt mostra (play)
.
O início do prompt sempre mostrará qual é o ambiente ativo.
E para sair dele, retornando ao base:
conda deactivate
Criação de ambientes com versões específicas de Python
É comum precisarmos ter uma versão específica do Python que não seja a versão mais recente, e o Conda permite criar ambientes com versões específicas adicionando um parâmetro ao final do comando da criação do ambiente.
Vamos voltar ao base e criar um novo ambiente com a versão 3.10 do Python, com o nome py310
:
conda deactivate
conda create --name py310 python=3.10
Agora vamos verificar a versão do Python do base
, ativar o novo ambiente e verificar a versão do Python de ambos com os seguintes comandos:
python --version
conda activate py310
python --version
Caso um ambiente seja criado sem a determinação de uma versão de Python o ambiente não terá uma versão de Python nele e utilizará a versão padrão do sistema. É o caso do ambiente play
, que criamos sem especificar uma versão de Python.
Veja como fica a verificação da versão e do path de Python utilizado nos nossos três ambientes: base
, play
e py310
:
Repare que até o base
utiliza uma versão própria, mas o play
usa o PATH padrão do sistema.
Listando os ambientes existentes
Algo muito útil é saber quais são os ambientes existentes, com o comando
conda env list
, que pode ser usado a partir de qualquer ambiente.
Removendo ambientes
Para excluir um ambiente basta usar o comando a seguir, escolhendo corretamente o nome do ambiente:
conda deactivate
conda remove --name py310 --all
E agora o ambiente removido não aparece mais na lista de ambientes:
Instalando pacotes em um ambiente
O grande motivo de criarmos ambientes virtuais é instalar pacotes nele sem que interfiram em outros ambientes.
Para o gerenciamento de pacotes utilizaremos o Pip, mas antes precisamos ativar o ambiente correto. Faremos isso no ambiente play
:
conda activate play
pip install numpy pandas
Veja que instalamos os pacotes numpy
e pandas
no ambiente play
:
E podemos verificar os pacotes instalados nos ambientes play
e p310
(eu o criei novamente), para garantir que a instalação só ocorreu no play
:
conda activate play
pip freeze
conda activate p310
pip freeze
Usando Ambientes Virtuais no VS Code
Se você usa o VS Code sabe que ele facilita muitos processos (incluindo os de Git), e para ambientes virtuais não seria diferente.
O site do VS Code tem uma página muito didática explicando como criar e escolher ambientes. Portanto, vou me deter em explicar o essencial, que é como escolher um ambiente para execução do seu código.
Esta é uma janela do VS Code com um arquivo .py
aberto:
Repare que na barra de status, no canto inferior direito, temos indicada a versão do Python utilizada no projeto, e é versão padrão do sistema: 3.11.4.64-bit (microsoft store)
.
O VS Code normalmente já detecta que o sistema tem o Conda instalado e quais são os ambientes criados.
Ao clicar na versão de Python instalada (no canto inferior direito) é aberta uma seleção de interpretadores já detectados, e lá estão nossos base
, play
e py310
.
Basta selecionar o py310
que a versão do Python instalado nele passará a ser o interpretador padrão para arquivos .py
do projeto, com todos os pacotes instalados no ambiente.
Para Jupyter Notebooks
Nos notebooks a seleção do ambiente é um pouco diferente.
Repare que com este notebook aberto a barra de status (era no canto inferior direito) não mostra a referência da versão de Python sendo utilizada.
Ao invés disso temos no alto à direita, logo acima da primeira célula, um “Select Kernel”.
Ao clicar nele se abrirá um menu de seleção de kernel. Então selecione primeiro “Python Environments…” e depois o ambiente Conda desejado.
Agora esse notebook utilizará nosso ambiente py310
com a versão de Python e os pacotes instalados nele.
Essa seleção precisa ser feita em cada notebook individualmente.
Informação Bônus!
Tudo isso, desde a instalação do Python na máquina até a configuração do VS Code, foi feito sem precisar reiniciar o Windows.
Ao longo do texto coloquei referências de vários locais da web com mais informações, e aqui abaixo estão todos eles resumidos e alguns adicionais.
Referências
- Dennis Bakhuis tutorials: Python — Environments, Conda, Pip, Jupyter, aaaaah!
- Rob Mulla: The Ultimate Coding Setup for Data Science
- Anaconda Blog: Understanding Conda and Pip
- Conda vs Pip: Choosing your Python package manager
- David R. Pugh: Getting Started with Conda
- Conda User Guide: Managing Environments
Guia bem completo de comandos para gerenciar ambientes virtuais do Conda em linha de comando. - Conda Documentation: Conda
- Miniconda Documentation: Conda > Docs > Miniconda
- Anaconda Documentation: Anaconda Distribution
- Anaconda Documentation: Working with environments
Instruções para fazer upload de ambientes na sua conta pessoal no Anaconda.org, para depois fazer download e instalar em outra máquina, ou compartilhar com outras pessoas. - VS Code Documentation: Python environments in VS Code