Conda e ambientes virtuais

O Anaconda (paródia com o nome de outra cobra, a python) é uma iniciativa que tem como objetivo agregar as principais ferramentas para análise de dados no python. Para utilizá-lo, baixe seu único arquivo contendo um novo python e todas as bibliotecas, que serão instaladas na home do próprio usuário (sem interferir na instalação principal). O arquivo instalador pode ser baixado do site do Anaconda, escolhendo sistema operacional, versão do python e arquitetura. Depois, torne-o executável (chmod +x nome_do_arquivo.sh) e siga os passos.

Diagrama dos produtos Conda. Fonte: Planemo documentation
Diagrama dos produtos Conda. Fonte: Planemo documentation

Se preferir uma versão mais minimalista, instale o Miniconda. Ele contêm apenas o gerenciador de pacotes (conda) e o Python. Baixe o programa no site do Miniconda e instale-o. Então, você pode usar o comando conda para instalar quaisquer outros pacotes e criar ambientes, etc. Existem duas variantes do instalador: Miniconda é baseado em Python 2 e Miniconda3 é baseado em Python 3. Observe que a escolha de qual Miniconda está instalado afeta apenas o ambiente raiz. Independentemente de qual versão do Miniconda você instalar, você ainda pode instalar os ambientes Python 2.x e Python 3.x.

Para finalizar, abra uma nova sessão ou atualize seu terminal com o comando “source ~/.bashrc”.

Ambientes virtuais

Um ambiente virtual (“virtualenv”) basicamente cria uma cópia de todos os diretórios necessários para que um programa Python seja executado, o que inclui:

  • bibliotecas comuns do Python (standard library);
  • gerenciador de pacotes (pip/conda);
  • o próprio binário do Python (Python 2.x/3.x);
  • dependências que estiverem no diretório site-packages;
  • seu código fonte descrevendo sua aplicação.

Assim, ao instalar uma nova dependência dentro do ambiente criado pelo virtualenv, ele será colocado no diretório site-packages relativo à esse ambiente, e não mais globalmente.

Para criar um ambiente virtual no miniconda, use o seguinte comando (suponde que o ambiente chame-se py37env, para versão 3.7):

conda create -n py37env python=3.7

Para entrar e sair desse ambiente, use:

conda activate py37env
conda deactivate

Você também pode criar um alias para esse comando no arquivo “~/.bashrc”, como “alias py37env=’source activate py37env'”, por exemplo.

Algumas versões desatualizadas podem deixar o carregamento do terminal muito lento, por causa da inclusão de algumas linhas no arquivo “~/.bashrc” que chamam comandos de modo ineficiente. Para ativar ou desativar o carregamento automático (“auto start”) de um determinado ambiente virtual do conda logo ao iniciar um terminal Linux, deve-se ativar o determinado ambiente e executar o comando “conda config –set auto_activate_base true” (ou “false”).

Pacotes do Conda

Para instalar/remover pacotes usando o conda, veja esses exemplos:

conda install --name py37env rpy2
conda remove -n py37env rpy2

Para atualizar o conda e todos os seus pacotes, use:

conda update -n base -c defaults conda
conda update --all

Se der “PermissionError: [Errno 13] Permission denied: ‘/home/user/miniconda3/…'”, mude as credenciais da pasta do miniconda usando “sudo chown -R user /home/user/miniconda3/”.

Para adicionar um canal extra para instalar outros pacotes, use os seguintes comandos:

conda config --append channels conda-forge
conda install future
conda install geocoder

Esse exemplo instala o pacote “geocoder” – veja mais sobre ele no post sobre Como obter cidade usando latitude e longitude.

Existem casos em que um pacote não está em nenhum repositório do conda, mas pode ser instalado através do pip. A maneira mais simples de instalar pacotes em um ambiente conda preexistente usando pip é quando o ambiente conda existente não possui o pip instalado. Nesse caso, o pacote é instalado no mesmo diretório que as outras libs do ambiente virtual, em vez do padrão do sistema. Não é o recomendado pelo fato de que pip pode sobrescrever versões de pacotes já instalados e quebrar o ambiente.

Ambiente virtual para o R

Caso queira usar o R, o indicado é criar um outro ambiente virtual só para ele. Depois, use o canal “conda-forge” para instalar o R, conforme segue:

# Criar ambiente virtual para o R
conda create -n renv

# Ativar ambiente virtual
conda activate renv

# Instalar o R no novo ambiente virtual
conda install -c conda-forge R

Para instalar pacotes do R no ambiente virtual, você pode usar o seguinte comando, substituindo PACKAGENAME pelo nome do pacote R que aparece no CRAN (Comprehensive R Archive Network):

$ conda search -f r-PACKAGENAME

Os pacotes R disponíveis no conda estão listados no link. Caso não seja possível instalar o pacote através desse comando, entre no terminal R (certifique-se de estar no ambiente virtual dele) e faça a instalação especificando o caminho. Veja esse exemplo, considerando que o R está no ambiente virtual “renv”:

> install.packages("PACKAGENAME", dependencies=TRUE, "~/miniconda3/envs/renv/lib/R/library/")

Para o caso do ambiente virtual ser o “base”, o caminho das bibliotecas R é “/home/user/anaconda3/lib/R/library”.

Se tiver algum shell script que chame scripts em R ou em python, deve-se incluir o comando de ativar o respectivo ambiente virtual antes de sua execução.

Scripts

Se você desenvolveu um script em um ambiente virtual e deseja colocá-lo no crontab ou executá-lo de fora desse ambiente, será preciso exportar o caminho de onde estão os binários para execução e ativar esse ambiente. Veja o exemplo a seguir:

# Usar ambiente virtual Miniconda: Python 3.7.3 e R 3.5.0
export PATH="/home/user/miniconda3/bin:$PATH"
source activate py37env
python3 -V
Rscript --version

Com esses comandos no início de seu shell script em bash, é exportada a variável de caminho, ativado o ambiente virtual e ainda impressas as versões do python e do R utilizados.

Se preferir o “virtualenv” sem o conda, você pode instalá-lo através do pip e usá-lo conforme indicado nesse link da Python Academy.

Reconstrução de ambientes virtuais

É possível gerar um arquivo YAML com as bibliotecas e versões instaladas no ambiente virtual. Para criar esse arquivo do ambiente em uso, digite o seguinte comando:

conda env export > libs.yml

Para criar um ambiente a partir dessa lista ou atualizar um já existente, é só executar um dos comandos abaixo, respectivamente:

conda env install -f libs.yml
conda env update -f libs.yml

4 comments

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.