web-dev-qa-db-fra.com

Est-ce que Conda remplace le besoin de virtualenv?

J'ai récemment découvert Conda après avoir eu du mal à installer SciPy, en particulier sur une application Heroku que je suis en train de développer.

Avec Conda, vous créez des environnements très similaires à ce que fait virtualenv . Mes questions sont:

  1. Si j'utilise Conda, remplacera-t-il le besoin de virtualenv? Si non, comment utiliser les deux ensemble? Est-ce que j'installe virtualenv dans Conda ou Conda dans virtualenv?
  2. Dois-je toujours utiliser pip? Si oui, pourrai-je toujours installer des paquets avec pip dans un environnement isolé?
178
Johan
  1. Conda remplace virtualenv. A mon avis c'est mieux. Il n'est pas limité à Python mais peut également être utilisé pour d'autres langages. D'après mon expérience, l'expérience est beaucoup plus fluide, notamment pour les packages scientifiques. La première fois que j'ai installé correctement MayaVi sur Mac, c'était avec conda.

  2. Vous pouvez toujours utiliser pip. En fait, conda installe pip dans chaque nouvel environnement. Il connaît les paquets installés par pip.

Par exemple:

conda list

répertorie tous les packages installés dans votre environnement actuel. Les packages installés par Conda apparaissent comme ceci:

sphinx_rtd_theme          0.1.7                    py35_0    defaults

et ceux installés via pipcomme ceci:

wxpython-common           3.0.0.0                   <pip>
138
Mike Müller

La réponse courte est, vous avez seulement besoin de conda.

  1. Conda combine efficacement les fonctionnalités de pip et virtualenv dans un seul package, vous n'avez donc pas besoin de virtualenv si vous utilisez conda.

  2. Vous seriez surpris du nombre de paquets que conda prend en charge. Si cela ne suffit pas, vous pouvez utiliser pip under conda.

Voici un lien vers la page conda comparant conda, pip et virtualenv:

https://docs.conda.io/projects/conda/en/latest/commands.html#conda-vs-pip-vs-virtualenv-commands .

54
Mad Physicist

Environnements virtuels et pip

J'ajouterai que créer et supprimer les environnements de conda est simple avec Anaconda.

> conda create --name <envname> python=<version> <optional dependencies>

> conda remove --name <envname> --all 

Dans un environnement activé , installez les packages via conda ou pip:

(envname)> conda install <package>

(envname)> pip install <package>

Ces environnements sont fortement liés à gestion de paquets de type pip conda , il est donc simple de créer des environnements et d’installer les packages Python et non Python.


Jupyter

De plus, installation de ipykernel dans un environnement ajoute une nouvelle liste dans le menu déroulant Noyaux des notebooks Jupyter, étendant ainsi les environnements reproductibles aux notebooks. Depuis Anaconda 4.1, des extensions supplémentaires ont été ajoutées , ajoutant des extensions aux ordinateurs portables plus facilement.

Fiabilité

D'après mon expérience, conda est plus rapide et plus fiable lors de l'installation de grandes bibliothèques telles que numpy et pandas. De plus, si vous souhaitez transférer l’état préservé d’un environnement, vous pouvez le faire par partage ou clonage une env.

31
pylang

L'installation de Conda vous permettra de créer et de supprimer python environnements à votre guise, vous offrant ainsi les mêmes fonctionnalités que virtualenv .

Dans le cas des deux distributions, vous pourrez créer un arbre de système de fichiers isolé, dans lequel vous pourrez installer et supprimer les packages python (probablement avec pip) à votre guise. Ce qui peut être pratique si vous voulez avoir différentes versions de la même bibliothèque pour différents cas d'utilisation ou si vous voulez simplement essayer une distribution et la supprimer après en conservant votre espace disque.

Différences:

Accord de licence. Alors que virtualenv relève de la licence la plus libérale licence MIT , Conda utilise une licence BSD à 3 clauses.

Conda vous fournit son propre système de contrôle des paquets. Ce système de contrôle des packages fournit souvent des versions précompilées (pour les systèmes les plus répandus) des logiciels non-python les plus utilisés, ce qui peut être très simple pour faire fonctionner certains packages d’apprentissage automatique. En d'autres termes, vous n'avez pas besoin de compiler du code C/C++ optimisé pour votre système. Bien que ce soit un grand soulagement pour la plupart d'entre nous, cela pourrait affecter les performances de ces bibliothèques.

Contrairement à virtualenv, Conda duplique certaines bibliothèques système au moins sur un système Linux. Ces bibliothèques peuvent se désynchroniser, ce qui entraînerait un comportement incohérent de vos programmes.

Verdict:

Conda est excellent et devrait être votre choix par défaut lorsque vous commencez votre apprentissage de la machine. Cela vous fera gagner du temps en jouant avec gcc et de nombreux paquets. Pourtant, Conda ne remplace pas virtualenv. Il introduit une complexité supplémentaire qui peut ne pas toujours être souhaitée. Il est sous licence différente. Vous voudrez peut-être éviter d'utiliser conda sur des environnements distribués ou sur du matériel HPC.

14
y.selivonchyk

Une autre nouvelle option et ma méthode actuelle préférée pour obtenir un environnement opérationnel est Pipenv

C’est actuellement l’outil de packaging Python officiellement recommandé de Python.org

7
Johan

Oui, conda est beaucoup plus facile à installer que virtualenv et le remplace quasiment.

2
Liang Huang