Descobri recentemente o Conda depois de ter problemas para instalar o SciPy, especificamente em um aplicativo Heroku que estou desenvolvendo.
Com o Conda, você cria ambientes muito parecidos com o que o virtualenv faz. Minhas perguntas são:
- Se eu usar o Conda, ele substituirá a necessidade de virtualenv? Caso contrário, como uso os dois juntos? Eu instalo o virtualenv no Conda ou o Conda no virtualenv?
- Ainda preciso usar o pip? Em caso afirmativo, ainda poderei instalar pacotes com pip em um ambiente isolado?
Respostas:
Conda substitui o virtualenv. Na minha opinião, é melhor. Não é limitado ao Python, mas também pode ser usado para outros idiomas. Na minha experiência, fornece uma experiência muito mais suave, especialmente para pacotes científicos. A primeira vez que instalei o MayaVi corretamente no Mac foi com
conda
.Você ainda pode usar
pip
. De fato, éconda
instaladopip
em cada novo ambiente. Ele conhece os pacotes instalados pelo pip.Por exemplo:
lista todos os pacotes instalados no seu ambiente atual. Pacotes instalados pela Conda aparecem assim:
e os instalados via
pip
têm o<pip>
marcador:fonte
<pip>
mostras que foi instalado com pip caso contrário é instalado com Conda.Resposta curta é, você só precisa de conda.
O Conda combina efetivamente a funcionalidade do pip e do virtualenv em um único pacote, para que você não precise do virtualenv se estiver usando o conda.
Você ficaria surpreso com quantos pacotes o conda suporta. Se não for suficiente, você pode usar pip sob conda.
Aqui está um link para a página conda comparando conda, pip e virtualenv:
https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands .
fonte
Ambientes virtuais e
pip
Acrescentarei que criar e remover ambientes conda é simples com o Anaconda.
Em um ambiente ativado , instale pacotes via
conda
oupip
:Esses ambientes estão fortemente ligados ao gerenciamento de pacotes do tipo conda , portanto é simples criar ambientes e instalar pacotes Python e não Python.
Jupyter
Além disso, a instalação
ipykernel
em um ambiente adiciona uma nova listagem no menu suspenso Kernels dos notebooks Jupyter, estendendo os ambientes reproduzíveis aos notebooks. A partir do Anaconda 4.1, as nbextensions foram adicionadas , adicionando extensões aos notebooks com mais facilidade.Confiabilidade
Na minha experiência, o conda é mais rápido e mais confiável na instalação de grandes bibliotecas como
numpy
epandas
. Além disso, se você deseja transferir o estado preservado de um ambiente, pode fazê-lo compartilhando ou clonando um ambiente.fonte
A instalação do Conda permitirá criar e remover ambientes python conforme desejado, fornecendo a mesma funcionalidade que o virtualenv faria.
No caso de ambas as distribuições, você poderá criar uma árvore de sistema de arquivos isolada, onde poderá instalar e remover pacotes python (provavelmente com pip) como desejar. O que pode ser útil se você quiser ter versões diferentes da mesma biblioteca para diferentes casos de uso ou apenas desejar experimentar alguma distribuição e removê-la posteriormente, economizando espaço em disco.
Diferenças:
Contrato de licença. Enquanto o virtualenv vem com a maioria das licenças MIT liberais , a Conda usa a licença BSD de 3 cláusulas.
A Conda fornece seu próprio sistema de controle de pacotes. Esse sistema de controle de pacotes geralmente fornece versões pré-compiladas (para os sistemas mais populares) de softwares não-python populares, o que pode facilitar o funcionamento de alguns pacotes de aprendizado de máquina. Ou seja, você não precisa compilar código C / C ++ otimizado para o seu sistema. Embora seja um grande alívio para a maioria de nós, pode afetar o desempenho dessas bibliotecas.
Ao contrário do virtualenv, o Conda duplica algumas bibliotecas do sistema pelo menos no sistema Linux. Essas bibliotecas podem ficar fora de sincronia, levando a um comportamento inconsistente dos seus programas.
Veredito:
O Conda é excelente e deve ser a sua escolha padrão ao iniciar o seu caminho com o aprendizado de máquina. Você economizará algum tempo mexendo no gcc e em vários pacotes. No entanto, o Conda não substitui o virtualenv. Introduz alguma complexidade adicional que nem sempre é desejada. Ele vem sob licença diferente. Você pode evitar o uso de conda em ambientes distribuídos ou em hardware HPC.
fonte
conda
software e as bibliotecas instalados. E no HPC,conda
é preferível em muitos casos, na verdade, está sendo usado pelos administradores do HPC para substituir itens comomodule
sistemas. Permite software instalado pelo usuário e maior isolamento do software, dois grandes problemas no HPC. A única ressalva que experimento é que muitos sistemas de arquivos HPC têm limites rígidos no número de arquivos em um diretório, e o conda cria muitos milhares de arquivos.Uso ambos e (a partir de janeiro de 2020) eles têm algumas diferenças superficiais que se prestam a diferentes usos para mim. Por padrão, a Conda prefere gerenciar uma lista de ambientes para você em um local central, enquanto o virtualenv cria uma pasta no diretório atual. O primeiro (centralizado) faz sentido se você estiver, por exemplo, realizando um aprendizado de máquina e tiver apenas alguns ambientes amplos que você usa em muitos projetos e deseja pular neles de qualquer lugar. O último (por pasta do projeto) faz sentido se você estiver realizando pequenos projetos pontuais com conjuntos de requisitos de bibliotecas completamente diferentes que realmente pertencem mais ao próprio projeto.
O ambiente vazio criado pela Conda é de cerca de 122 MB, enquanto o virtualenv é de cerca de 12MB, então esse é outro motivo pelo qual você pode preferir não espalhar os ambientes da Conda por todos os lugares.
Finalmente, outra indicação superficial de que o Conda prefere seus envs centralizados é que (novamente, por padrão), se você criar um env do Conda em sua própria pasta de projeto e ativá-lo, o prefixo do nome que aparece no shell é o absoluto (longo demais) caminho para a pasta. Você pode corrigir isso dando um nome, mas o virtualenv faz a coisa certa por padrão.
Espero que essas informações se tornem obsoletas rapidamente, à medida que os dois gerenciadores de pacotes disputam o domínio, mas essas são as compensações de hoje :)
fonte
pipenv
?Outra nova opção e meu atual método preferido de colocar um ambiente em funcionamento é o Pipenv
Atualmente, é a ferramenta de empacotamento Python oficialmente recomendada em Python.org
fonte
pipenv --two
para python2 e pipenv --three para python3Sim,
conda
é muito mais fácil de instalar do quevirtualenv
e praticamente substitui o último.fonte
virtualenv
mais geralconda
. Além disso, o Anaconda é apenas uma distribuição Python + que inclui a ferramenta Conda; a pergunta (e a resposta) são apenas sobre a Conda.Trabalho em empresas, atrás de vários firewalls com máquinas nas quais não tenho acesso de administrador
Na minha experiência limitada com python (2 anos), me deparei com algumas bibliotecas (JayDeBeApi, sasl) que, ao instalar via pip, lançavam erro de erros de dependência de C ++: Microsoft Visual C ++ 14.0 é necessário. Obtenha com "Ferramentas de compilação do Microsoft Visual C ++": http://landinghub.visualstudio.com/visual-cpp-build-tools
estes instalados bem com conda, portanto, desde aqueles dias eu comecei a trabalhar com conda env. no entanto, não é fácil impedir que o conda instale dependência dentro de c.programfiles onde eu não tenho acesso de gravação.
fonte