Ir para o conteúdo

Introdução

Nesse rápido guia vamos falar das duas principais ferramentas que utilizo para gerenciar ambientes virtuais nos projetos Python, como usá-las e também quando utilizar cada uma delas.

O que são ambientes virtuais?

Antes de falar das duas ferramentas, gostaria de dar um rápido overview no que são ambientes virtuais.

Ambientes virtuais são um mecanismo do Python (e de outras linguagens também), que ajudam a isolar os pacotes e dependências de um determinado projeto.

Um exemplo clássico seria: tenho um projeto api-clientes que foi desenvolvido usando a lib do flask 1.X e um segundo projeto, api-compras, usando a lib do flask 2.x. Nesse exemplo, como poderíamos trabalhar nos dois projetos sem a necessidade de reinstalar os pacotes a cada troca entre os projetos?

Basta criar um ambiente virtual para cada um deles. Com isso é possível isolar os pacotes e dependências entre eles. Agora vamos às ferramentas…

Ferramenta #1 – Venv

O Venv é uma ferramenta que já vem inclusa nas instalações do Python 3.5+ e auxilia a criar ambientes virtuais de maneira rápida, simples e leve.

Venv – como instalar?

O Venv não requer nenhuma instalação adicional, pois já vem junto com o próprio python.

Venv – criando ambiente virtual

Para criar um ambiente virtual com o Venv é bem simples, basta utilizar o seguinte comando:

python -m venv [nome do ambiente virtual]

Isso faz com que o Venv crie um ambiente virtual+ uma pasta no diretório atual e com mesmo nome, onde serão criados os arquivos do ambiente virtual e posteriores pacotes instalados lá. No meu caso vou chamar de meu_ambiente_virtual

comando para criar ambiente:

python3 -m venv meu_ambiente_virtual

podemos verificar a instalação com um simples ls:

ls -l meu_ambiente_virtual/

E por último, podemos dar uma espiada no arquivo de configuração:

cat meu_ambiente_virtual/pyvenv.cfg

Resultado da sequência de comandos:

Venv – como usar um ambiente virtual

Para ativar um ambiente virtual basta fazer o seguinte comando:

source meu_ambiente_virtual/bin/activate

perceba que o terminal deve ter mudado.

Agora podemos usar o Pip e instalar pacotes de maneira isolada dos pacotes do sistema e dos outros ambientes virtuais.

Ex: se executarmos um `pip freeze`, vai mostrar todos os pacotes desse ambiente virtual, e podemos ver que não tem nada instalado.

pip freeze

Para testar se nosso ambiente está isolado (em termos de pacote), vamos instalar um pacote. No nosso exemplo, um simples requests e ver que nesse ambiente virtual temos somente o requests e (suas dependências), chamando esses comandos:

pip install requests pip freeze

Resultado da sequência de comandos:

Para desativar o ambiente virtual, e voltar para o padrão do OS, basta chamar o comando:

deactivate

Venv – Quando usar

Para finalizar quero comentar quando recomendo usar o Venv.

  • Quando se está começando no Python
  • Para projetos pequenos e/ou rápidos
  • Um treino de programação ou POC de algum projeto da internet

Ferramenta #2 – Pyenv

Pyenv se destaca um pouco dos demais gerenciadores de ambientes, por que além de criar ambientes ele também permite instalar e gerenciar múltiplas versões do Python, o que permite uma produtividade maior para o desenvolvedor.

Pyenv – instalação (pyenv-instaler)

A instalação do Pyenv é um pouco mais complexa, e requer um tutorial completo, mas em resumo são 3 passos:

1. Instalar dependências (ex: Ubuntu 20.04 LTS)

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl

2. rodar instalação

curl https://pyenv.run | bash

3. Ativar no terminal

Para que o comando do Pyenv fiquei disponível no terminal deve ser adicionados algumas linhas ao ~/.bashrc ou ~/.zshrc (dependendo do terminal que você usa)

export PYENV_ROOT="$HOME/.pyenv" && \
export PATH="$PYENV_ROOT/bin:$PATH" && \
eval "$(pyenv init -)" && \
eval "$(pyenv virtualenv-init -)"

Tutorial para outras distro e mais informações:

Pyenv – criar ambiente virtual

Para criar ambientes no Pyenv, basta executar o comando: pyenv virtualenv [versao do python instalada pelo pyenv] [nome do ambiente], que no caso é a versão do Python + nome de ambiente.

E se por acaso eu não tiver o Python instalado no comando do Python?

Basta executar: pyenv install versao_python que o Pyenv fará isso por você.

Exemplo de comando Virtualenv:


pyenv virtualenv 3.10.9 meu_ambiente_nopyenv

para verificar a criação do ambiente virtual, diferente do Venv o Pyenv não cria uma pasta no diretório atual, ele faz isso em um local específico:

ls ~/.pyenv/versions/3.10.9/envs/meu_ambiente_nopyenv

outra maneira é usar o comando do próprio Pyenv:

pyenv virtualenvs

resultado da sequência de comandos acima:

Pyenv – como usar ambiente virtual

Agora com o ambiente virtual criado, podemos fazer o mesmo teste de instalação do pacote requests.

Primeiro passo é ativar o ambiente virtual com o comando:

pyenv activate meu_ambiente_nopyenv

Outra maneira de ativar e usando o comando Pyenv Shell, que mantem esse ambiente virtual ativo apenas nesse terminal (igual ao activate).

pyenv shell meu_ambiente_nopyenv

A terceira maneira é usando o pyenv local, que salva um arquivo .python_version na pasta atual e sempre que você “entrar nessa pasta”, o Pyenv ativa esse ambiente virtual.

pyenv local meu_ambiente_nopyenv

Agora, independente da maneira que você ativar o ambiente o importante é ativa-lo para começar a instalar os pacotes. Eu vou usar o Pyenv local.

E seguindo a mesma sêquencia de comandos que fizemos para o Venv, podemos ver que o resultado é exatamente o mesmo:

pyenv local meu_ambiente_nopyenv    # comando 1
pip freeze                          # comando 2
pip install requests                # comando 3
pip freeze                          # comando 4

Resultado da sêquencia de comandos acima:

E para desativar o ambiente virtual e voltar para o padrão do OS, vai depender da maneira que ativou.

# se ativou usando pyenv activate
pyenv deactivate meu_ambiente_nopyenv

# se ativou usando o shell
pyenv shell --unset meu_ambiente_nopyenv

# se ativou usando o local
pyenv local --unset meu_ambiente_nopyenv

Pyenv – Quando usar

O Pyenv na minha visão é uma suíte completa para gerenciar e instalar versões do Python e ambientes virtuais. Então recomendo usar na maioria dos seus projetos de médio/longo prazo e ou grande porte, principalmente porque com uma única ferramenta conseguimos gerenciar as bibliotecas e as versões do Python.

Além disso, recomendo o uso do Pyenv:

  • Quando quiser criar um ambiente de desenvolvimento
  • Quando pretende trabalhar com vários projetos
  • E quando já desenvolve profissionalmente com Python ( há mais de 2 anos)

Conclusão

Nesse artigo apresentei dois dos principais gerenciadores de pacote que uso no meu dia a dia, mostrando também o porquê e quando devemos utilizar cada um deles.

Meu principal objetivo foi ajudar você a focar em ser mais produtivo. Aprendendo essas duas ferramentas já é suficiente para dominar essa gestão de bibliotecas e versões do Python.

Indo além…

Para os profissionais do universo de outras linguagem, existem pacotes semelhantes ao Pyenv, que além de gerenciar pacotes, gerenciam e isolam também as versões da linguagem:

Outras publicações