A alguns meses atrás, tive que instalar um módulo bastante obscuro do
Python (Devito) para realizar uns testes e o os próprios desenvolvedores sugeriram utilizar o PIP. O resultado foi desastroso, pois o PIP não gerenciava bem as dependências, então parti para o Anaconda, o qual, nunca tinha chegado perto.
O Anaconda se mostrou um download muito grande e que me causava mais problemas do que resolvia. O navegador era lento, gerenciar ambientes é menos simples do que parece, as atualizações eram sofríveis, existem vários bugs na instalação do
Linux e do Windows, etc. Depois de algumas pesquisas, aprendi a utilizar o
Miniconda e resolvi meu problema.
Para quem ainda não conhece, o Anaconda é um gerenciador de pacotes alternativo para desenvolvedores Python, similar ao PIP e com suporte a outras linguagens relacionadas, como R e Julia. Isso se tornou necessário porque a quantidade de pacotes e versões do Python, R e outras linguagens, se tornou incompreensível para os gerenciadores de pacote do sistema (yum, zypper, apt...) e é crítico para quem trabalha com data science ou computação científica, então, as alternativas mais robustas começaram a surgir.
O Anaconda é prático, pois além de gerenciar pacotes, ele isola versões distintas em ambientes distintos, o que permite ter mais de uma versão dos mesmos módulos simultaneamente. E para desenvolvedores no Windows, estes gerenciadores alternativos são praticamente a única solução viável para trabalhar.
O problema do Anaconda é que ele é essencialmente uma suite comercial, então ele perde muito tempo e funcionalidade sendo bonito e com propagandas de serviços e soluções dos desenvolvedores. O Conda, por sua vez, é o verdadeiro gerenciador de pacotes e ambientes que existe por baixo do Anaconda, é totalmente Open Source e Free, relativamente fácil de utilizar e o Miniconda é uma instalação mínima do Conda. Na prática, o Miniconda é mais fácil de utilizar que o Anaconda. Meu foco neste artigo é fazer um tutorial rápido do Miniconda e apresentar algumas sugestões para melhorar sua funcionalidade.
Instalação do Miniconda
A instalação do Miniconda é bastante simples e é basicamente o mesmo procedimento no Linux e no Windows. Baixe o instalador do Miniconda, dê a ele permissão de execução e rode o script. O instalador tem uma interface de texto simples que faz algumas perguntas.
Três pontos críticos da instalação que exigem uma atenção especial:
- Local da Instalação: você pode escolher onde a instalação será feita, sendo este o local onde ficarão os pacotes do Miniconda e toda a estrutura de ambientes e versões, etc. Escolha um lugar que tenha espaço em disco e que você tenha acesso de escrita.
- Inclusão no PATH: no final da instalação, o Miniconda se oferece para se incluir no PATH do sistema. A minha sugestão é não faça isso, porque isso causa uma baita confusão.
- Fontes: tanto o Miniconda, quanto o Anaconda, compartilham servidores de onde os pacotes são baixados. Isso é bem prático, mas os servidores oficiais do Anaconda podem conter surpresas desagradáveis para alguns desenvolvedores.
A seguir, discutirei cada um dos pontos da instalação em detalhes. Nas referências, estão alguns tutoriais de instalação recomendados.
Local da Instalação
Tanto no Linux quando to Windows, o Miniconda não passa de um diretório cheio de links simbólicos - e alguns hard links - para os pacotes instalados. Os links estão organizados de modo a permitir que os pacotes interajam em seus respectivos ambientes, porém, sem causar interferência uns nos outros ou ter múltiplas cópias e consumir todo o espaço em disco.
Com isto, o Miniconda pode ser instalado localmente sem grandes problemas e fica a seu critério escolher esta localização. Instalar o Miniconda diretamente na home é comum, pois geralmente as instalações são individuais; instalar nos diretórios do sistema o tornaria disponível a todos, mas exigiria um 'sudo' a cada atualização ou instalação de pacote, nada prático. Neste aspecto, a instalação do Windows é mais sábia e pergunta se a instalação é multiusuário (instala do C:) ou local (instala no users).
Eu recomendo instalar em um canto seguro do seu @home. Eu, particularmente, coloquei o meu dentro do
~/bin que é um diretório pensado exatamente para isto. Assim, mantenho minha home arrumada e o Miniconda em um local seguro. Mas fique atento, uma instalação do Miniconda é pequena (388 Mb), mas ele operando, cresce de acordo com o volume de pacotes instalados. O meu diretório do Miniconda tem 8,9 Gb e faltam 50 Gb para eu me arrepender, então, pense bem onde colocar o Miniconda, principalmente se você lida com partições.
Integração com o Path
Logo no fim da instalação, ele pede para se adicionar ao Path e esta era a opção recomendada, mas eu não recomendo pelo seguinte, ele se instala como o primeiro item do Path, de modo que o Miniconda seja o provedor prioritário do Python e do R.
Isto faz com que alguns aplicativos fiquem confusos, principalmente APPs do próprio Miniconda ou pode gerar conflitos em alguns pontos isolados do sistema. Por exemplo, vários aplicativos utilizam o Path para lançar scripts do Phyton, então essa instalação pode desviar parte do sistema para Miniconda deixar o sistema à mercê do miniconda. Eu recomendo recusar a inclusão no Path e fazer o carregamento do Miniconda manualmente via terminal.
Mais adiante, explico alguns truques para tornar isto menos sofrido.
Fontes
Qual é o meu problema com os fontes?
O Anaconda oferece uma experiência semelhante a de um gerenciador de pacotes e os mesmos problemas. Por exemplo, diferentes versões do mesmo pacote, de servidores distintos, podem quebrar ou reduzir a funcionalidade do sistema (ouvir MP3 no openSUSE, quem nunca?) ou alguns servidores estão mais atualizados que outros para um aplicativo específico (problema típico do LibreOffice e do Gimp).
O Miniconda sofre deste mesmo tipo de problema, e existem comunidades especializadas em resolver problemas específicos.
No meu caso, eu utilizo muito mais o R do Miniconda do que o Python e frequentemente eu tinha problemas para instalar alguns pacotes de Machine Learning no Miniconda, ou por falta de disponibilidade ou uma misteriosa incompatibilidade com o meu R.
Por que? Depois de rodar pelas profundezas, descobri que o R distribuído pelo Anaconda é um fork compilado pela Microsoft (está escrito no próprio R, bem no boot), com algumas otimizações que na prática o tornam incompatível ou instável com pacotes não-MS. A solução para isto era instalar o R puro, a versão upstream. A solução foi mudar o repositório do Miniconda para um que distribua o upstream. Felizmente, achei o Bioconda que é uma comunidade de cientistas de dados com excelentes repositórios, com versões mais compatíveis e mais atualizadas dos pacotes que utilizo. Foi minha salvação.