Crash course de conda¶
Objetivos¶
Aprender a utilizar o conda para gerenciar a instalação de pacotes, dependências e ambientes;
Entender conceitos de distribuição, módulo e repositório;
Compreender comandos do conda e praticá-los em terminal;
Pré-requisitos¶
Instalação da distribuição Anaconda (recomenda-se Python 3.x);
Acesso simples a um terminal ou ao Anaconda Prompt;
Introdução¶
conda é um gerenciador de pacotes, dependências e ambientes para múltiplas linguagens;
Pacote de código aberto executável em Windows, macOS e Linux;
Seu objetivo é fornecer suporte à rápida instalação, desinstalação e atualização de pacotes
Embora criado para Python, hoje pode ser aplicado a softwares escritos em R, Ruby, Lua, Java, Javascript, C++ etc.
Atualmente, há cerca de 7500 pacotes gerenciados no repositório repo.anaconda.com que são mantidos pela empresa Anaconda Inc.
Benefícios do conda para cientistas de dados¶
Fornece pacotes pré-construídos que evitam a necessidade de lidar com compiladores ou saber como configurar uma ferramenta específica;
Gerencia instalações de ferramentas que são mais difíceis de instalar (como TensorFlow) com apenas um passo;
Permite que você forneça seu ambiente a outras pessoas em diferentes plataformas, assim oferecendo suporte à reprodutibilidade de fluxos de trabalho de pesquisa;
Permite o uso de outras ferramentas de gerenciamento de pacotes, tais como pip, dentro de ambientes conda onde uma biblioteca ou ferramentas ainda não foram empacotadas para conda;
Fornece bibliotecas e ferramentas de ciência de dados comumente usadas, tais como R, NumPy, SciPy e TensorFlow. Estes são construídos usando bibliotecas específicas de hardware otimizadas (como MKL da Intel, ou CUDA da NVIDIA) que aceleram o desempenho sem alterações de código.
Conceitos fundamentais¶
Anaconda: distribuição de código aberto, alto desempenho e otimizada para Python e R.
Anaconda Cloud: repositório de pacotes hospedado na web (nuvem)
Anaconda Navigator: interface gráfica incluída na distribuição para fácil gestão de pacotes, ambientes e canais.
Canal: local dos repositórios onde o conda procura por pacotes. Pode ser um repositório público, na web, ou privado, dentro da universidade, em uma empresa, na sua casa, etc.
conda: gerenciador de pacotes e ambientes que vem incluído na distribuição.
conda environment (Ambiente): diretório que contém uma coleção específica de pacotes e dependências que pode ser administrado separadamente. Por exemplo, é possível manter um ambiente Python 2 e Python 3 totalmente isolados sem que um interfira em outro.
conda package (Pacote): arquivo comprimido que contém todos os elementos necessários para o funcionamento de um software: bibliotecas, módulos, executáveis e componentes.
conda repository (Repositório, ou repo): o repositório em nuvem mantido pela Anaconda.
Miniconda: é uma versão menor da distribuição que inclui apenas pacotes essenciais, tais como
conda,pip,zlibe outros considerados básicos. Pode ser expandido pela instalação de pacotes adicionais.noarch package (Pacote independente de arquitetura): pacote que não contém nada específico à arquitetura de um sistema e que pode ser instalado em qualquer plataforma.
noarchconstitui um subdiretório em um canal.Repositório: qualquer local onde ativos de software são armazenados e podem ser baixados ou recuperados para instalação e uso em computadores.
Note
Se você é novo com Python ou conda, recomenda-se instalar a distribuição Anaconda (inteira) em vez da Miniconda, embora mais tempo e espaço em disco sejam necessários. A distribuição padrão requer cerca de 3 Gb de espaço em disco, ao passo que a Miniconda ocupa em torno de 400 Mb.
Comandos fundamentais¶
A lista a seguir não é exaustiva e contempla os comandos conda mais frequentes. Baseia-se na [Conda Cheat Sheet]
Aqui, dividiremos os comandos nos seguintes grupos:
informação e atualização
ambientes
pacotes e canais
adicionais
Comandos para manutenção e atualização¶
comando  | 
o que faz?  | 
|---|---|
  | 
verifica se conda está instalado  | 
  | 
verifica instalação e versão do conda  | 
  | 
atualiza o gerenciador para a versão atual  | 
  | 
idem  | 
  | 
atualiza todos os pacotes da distribuição para versões estáveis  | 
Comandos para trabalhar com ambientes¶
comando  | 
o que faz?  | 
|---|---|
  | 
cria novo ambiente com nome “AMB” para funcionar com a versão Python 3.x e instala neste ambiente os pacotes PKG1 e PKG2, sendo o primeiro na versão específica “v.s” e o outro a estável mais atual  | 
  | 
ativa o ambiente de nome AMB  | 
  | 
ativa um ambiente dado seu local  | 
  | 
desativa o ambiente ativo  | 
  | 
lista todos os pacotes do ambiente ativo  | 
  | 
lista todos os pacotes do ambiente AMB  | 
  | 
deleta todo o ambiente AMB  | 
  | 
faz um clone NAMB de AMB  | 
  | 
exporta configurações de AMB em um arquivo YAML  | 
  | 
cria AMB a partir de configurações contidas em um arquivo YAML  | 
Note
YAML (acrônimo para “YAML Ain’t Markup Language”) é uma linguagem de serialização de dados legível por humanos comumente usada para organizar arquivos de configuração. É utilizada em múltiplas linguagens. Veja [YAML].
Warning
conda activate e conda deactivate somente funcionam a partir das versões 4.6 do conda. Para versões anteriores, no Windows usa-se activate/deactivate e no macOS, usa-se source activate/source deactivate.
Comandos para trabalhar com pacotes e canais¶
comando  | 
o que faz?  | 
|---|---|
  | 
procura pelo pacote PCT nos canais configurados cuja versão esteja no intervalo 2.8 <= v < 3.2  | 
  | 
instala o pacote PCT, se disponível  | 
  | 
instala o pacote AMB a partir do canal CH  | 
  | 
instala o PCT com a versão especificada (4.1.0)  | 
  | 
instala pacote com uma das versões especificadas (OU)  | 
  | 
instala uma das das versões do pacote especificadas (E)  | 
Note
A lista de canais padrão utilizadas pela distribuição fica armazenada no arquivo oculto .condarc. A partir do caderno interativo, execute o comando !cat ~/.condarc para uma visão geral do conteúdo do arquivo .condarc.
Comandos adicionais¶
comando  | 
o que faz?  | 
|---|---|
  | 
fornece informação detalhada sobre o pacote AMB  | 
  | 
remove pacotes inutilizados  | 
  | 
remove o pacote PCT do ambiente AMB  | 
  | 
atualiza todos os pacotes do ambiente AMB  | 
  | 
instala pacotes sem exigir prompt do usuário  | 
  | 
para obter ajuda sobre os comandos disponíveis do gerenciador  | 
Tip
Em muitos casos, opções de comandos que são precedidas por 2 hífens (--) podem ser abreviadas para apenas 1 hífen e a primeira letra da opção. Então, --name e -n, bem como --envs e -n são opções equivalentes.
Exemplos¶
Criar ambiente chamado “dataScience” com versão Python 3.8 contendo os pacotes numpy, versão 1.19.1, e pandas, mais atual no repositório Anaconda.
conda create --name dataScience python=3.8 numpy=1.19.1 pandas
Alternar entre ambientes
Abaixo, vamos reproduzir a mudança de um ambiente para outro em um Z Shell apontando para a pasta ICD e mostrar que o pacote scipy está instalado em um ambiente, mas não em outro.
# no ambiente 'base', procuramos pelo pacote 'scipy'
(base) gustavo@GloryCrown ICD % conda list scipy
# packages in environment at /Users/gustavo/opt/anaconda3:
#
# Name                    Version                   Build  Channel
scipy                     1.6.2            py38hd5f7400_1
# ativamos um novo ambiente chamado 'lecture'
(base) gustavo@GloryCrown ICD % conda activate lecture
(lecture) gustavo@GloryCrown ICD %
# dentro do ambiente 'lecture', procuramos pelo pacote 'scipy'
(lecture) gustavo@GloryCrown ICD % conda list scipy
# packages in environment at /Users/gustavo/opt/anaconda3/envs/lecture:
#
# Name                    Version                   Build  Channel
Nada é mostrado, significando que o pacote scipy está indisponível no ambiente lecture. Enfim, desativamos o ambiente ativo.
# desativamos 'lecture' e voltamos para 'base'
(lecture) gustavo@GloryCrown ICD % conda deactivate
(base) gustavo@GloryCrown ICD %
Criar arquivo YAML para construção de ambiente personalizado
Abra seu editor de texto preferido (sugestão: no Windows,
notepad++; no Linux,gedit; no macOS,TextEdit);Salve o arquivo como
icd.yml;Personalize o seu ambiente (use o modelo a seguir);
Use o comando
conda env create -f icd.ymlpara criar o ambiente;Verifique se o ambiente foi criado corretamente com
conda env list. Você deve ver algo como:
(base) gustavo@GloryCrown ICD % conda env list
# conda environments:
#
base                  *  /Users/gustavo/opt/anaconda3
icd                      /Users/gustavo/opt/anaconda3/envs/icd
# Conteúdo do arquivo  "icd.yaml" 
# para construir o ambiente 'icd'
name: icd # nome do ambiente
channels: # lista de canais a utilizar
  - defaults # canais padrão
  - conda-forge
dependencies: # pacotes dependentes
  - numpy
  - scipy
  - sympy
  - matplotlib
  - pandas
  - seaborn  
Tip
Quando você precisar atualizar o seu ambiente de ciência de dados, seja porque necessita de um pacote novo, ou porque encontrou um pacote melhor, basta atualizar o conteúdo do arquivo icd.yml e então executar o seguinte comando: conda env update --file icd.yml --prune. A opção --prune faz com que o conda remova dependêncaias que não forem mais necessárias.
Desempenho do conda¶
A instalação de pacotes pode tornar-se lenta por uma variedade de motivos: processamento de metadados, velocidade de internt, verificação de dependências, etc. À medida que o número de pacotes disponíveis aumenta, a busca que o conda realiza pode perdurar por mais tempo.
Caso ao tentar instalar um pacote haja lentidão, há algumas questões a analisar. Verifique se há dependências instaladas via pip; se os canais estão disponíveis; se o pacote que você está tentando instalar está disponível.
Para melhorar o desempenho consulte recomendações aqui.
Hint
Trabalhar com ambientes menores e dedicados é sempre melhor e mais rápido do que ter ambientes grandes, que são bem mais difíceis de gerenciar. Para ganhar desempenho, reduza a complexidade de seus ambientes.
Exercícios¶
Usando o
conda, crie um novo ambiente de trabalho para o curso chamadoicd.Ative o novo ambiente e instale:
o pacote
numpyem sua versão mais recente;o pacote
scipyna versão 1.6.0;
Execute o comando
conda list ncurses. Qual é a resposta? Ele está instalado? Qual é a versão?Use um comando para buscar informações sobre a versão mais recente do pacote
sympy. Quantas e quais são as suas dependências?Desinstale o pacote
scipy. Quantos pacotes permaneceram em seu ambiente?Desinstale o pacote
numpy. Algum pacote ainda permaneceu em seu ambiente? Por quê?Desative o ambiente
icde delete-o completamente.Crie um novo ambiente personalizado
icda partir de um arquivo YAML.