Conda - ambientes virtuais para desenvolvimento e testes

Machine Learning - ferramentas e frameworks...

Machine Learning - ferramentas e frameworks...

Para estudos de Machine Learning escrevi artigo1 para termos as ferramentas preparadas. Lá tivemos um contato rápido com Conda2. Hoje vamos falar um pouco mais sobre esta versátil ferramenta.

Conda

“Package, dependency and environment management for any language, such as: Python, R, Ruby, Lua, Scala, Java, JavaScript, Go, C/ C++, FORTRAN”

Ferramenta para gerenciamento de pacotes, dependências e ambientes (virtuais) para qualquer linguagem, como por exemplo: Python, R, Ruby, Lua, Scala, Java, JavaScript, Go, C/ C++, FORTRAN

Conda é uma ferramenta que permite o gerenciamento de pacotes e ambientes em sistemas operacionais Linux, macOs, Windows tendo a curadoria do repositório de pacotes3 realizada pela empresa Anaconda®. Anaconda é também a empresa mantenedora da plataforma de ciência de dados e aprendizagem de máquina em Python e R (Anaconda Distribution for data science and machine learning e Anaconda Enterprise for AI/ML)4.

Ambientes virtuais


Ambientes virtuais são um ótimo recurso para que se possa trabalhar com diferentes versões de ferramentas ou linguagem sem afetar por exemplo o ambiente operacional padrão da sua estação de trabalho.

Lá no já citado artigo “Aprendendo Aprendizado de Máquina - primeiro passo”, vimos como usar Conda para gerenciar recursos no escopo de ciência de dados/AI/ML e instalamos pacotes especícos de Python, Pandas, Jupyter, fast-ai etc.

Porém podemos trabalhar com diferentes versões de Python e para diferentes propósitos, como testar versões de Django e ir mais além.

Por padrão, os ambientes são criados no diretório do usuário (exemplo: /home/adriano.vieira/.conda), mas no momento de criar o ambiente pode ser informado outro diretório.

  • Criar ambiente: conda create --name (-n) <ENV_NAME>
    Este é um simples comando para criação; para mais detalhes use o comando conda create --help.
  $ conda create --name meu_env_virtual

    Solving environment: done
    ## Package Plan ##
      environment location: /home/adriano.vieira/.conda/envs/meu_env_virtual
    Proceed ([y]/n)? y

    Preparing transaction: done
    Verifying transaction: done
    Executing transaction: done
    #
    # To activate this environment, use
    #
    #     $ conda activate meu_env_virtual
    #
    # To deactivate an active environment, use
    #
    #     $ conda deactivate
  • Lista de ambientes criados: conda env list
  $ conda env list

    # conda environments:
    #
    GoLang                   /home/adriano.vieira/.conda/envs/GoLang
    Maven                    /home/adriano.vieira/.conda/envs/Maven
    fastai-cpu               /home/adriano.vieira/.conda/envs/fastai-cpu
    meu_env_virtual          /home/adriano.vieira/.conda/envs/meu_env_virtual
    ...
  • Excluir ambiente: conda env remove --name (-n) <ENV_NAME>
  $ conda env remove -n meu_env_virtual

    Remove all packages in environment /home/adriano.vieira/.conda/envs/meu_env_virtual:
    ## Package Plan ##
      environment location: /home/adriano.vieira/.conda/envs/meu_env_virtual
    Proceed ([y]/n)? y

Ativar uso de ambiente virtual

Para que possa começar a usar o ambiente é necessário ativar o ambiente.

Para ativar execute o comando conda activate <ENV_NAME>.

$ conda activate meu_env_virtual

A partir daí é que deverá instalar pacotes ou usa-lo dentro do escopo que definir.

Caso tenha definido que seu ambiente seja para o escopo de aplicações..

  • Go Lang
  $ conda create --yes --name GoLang
  $ conda activate GoLang
  $ conda install go
  • Maven + openjdk
  $ conda create --yes --name Maven
  $ conda activate Maven
  $ conda install maven
  • Python 3.7
  $ conda create --yes --name Python37
  $ conda activate Python37
  $ conda install python=3.7

Quando necessitar usar outro ambiente ou interromper o trabalho em um ambiente é necessário desativa-lo. Use o comando conda deactivate para desativar o ambiente ativo no momento.

$ conda deactivate

Como pode perceber, como boa prática deixe os escopos de trabalho separadados. Assim teremos ambientes específicos e sem influência de recursos adversos.

Quando estiver em dúvida e necessitar pesquisa por um nome de pacote use o comando conda search <PACKAGE>.

$ conda search django

Conclusão

Conda por conta de sua flexibilidade de usar diferentes versões de pacotes ou bibliotecas, pode ser uma mão na roda para o caso de querer testar sua aplicação em vários cenários. Ela também possibilita o uso em processos de testes e com sistemas de integração contínuos (IC) como Jenkins-CI, Gitlab-CI, Travis-CI etc.

Referências