Devrait-on utiliser conda, ou conda-forge pour les environnements Python?

Conda et conda-forge sont tous les deux des gestionnaires de paquets Python. Quel est le choix approprié lorsqu'un paquet existe dans les deux dépôts? Django, par exemple, peut être installé avec l'un ou l'autre, mais la différence entre les deux est de plusieurs dépendances (conda-forge en a beaucoup plus). Il n'y a aucune explication à ces différences, pas même un simple README.

Qui doit être utilisé? Conda ou conda-forge? Est-il question?

45
demandé sur justinnoor.io 2016-10-04 19:19:58

2 réponses

la réponse courte est que, d'après mon expérience en général, peu importe ce que vous utilisez.

La réponse longue:

conda-forge est un canal supplémentaire à partir duquel les paquets peuvent être installés. En ce sens, il n'est pas plus spécial que le canal par défaut, ou l'une des autres centaines (milliers?) de canaux que les gens ont posté des paquets. Vous pouvez ajouter votre propre canal si vous vous inscrivez à https://anaconda.org et télécharger vos propres Conda paquet.

ici, nous devons faire la distinction, que je pense que vous n'êtes pas clair au sujet de votre phrasé dans la question, entre conda, le gestionnaire de paquets multiplateformes, et conda-forge, le paquet sur le canal. Anaconda Inc. (anciennement Continuum IO), les principaux développeurs de conda logiciel, aussi maintenir un canal séparé de paquets, qui est la valeur par défaut quand vous tapez conda install packagename sans changer d'option.

il y a deux façons de changer les options pour canal. L'une est de spécifier un canal à chaque fois que vous installez un paquet:

conda install -c some-channel packagename

bien sûr, le paquet doit exister sur ce canal. Si vous utilisez souvent le même canal, vous voudrez peut-être l'ajouter à votre configuration. Vous pouvez écrire

conda config --add channels some-channel

pour ajouter le canal some-channel en haut de la channels liste de configuration. Cela donne some-channel la priorité la plus élevée (la priorité détermine (dans la partie) le canal est sélectionné lorsque plus d'un canal a un paquet en particulier). Pour ajouter le canal à la fin de la liste et lui donner la priorité la plus basse, tapez

conda config --append channels some-channel

Si vous souhaitez supprimer le canal que vous avez ajouté, vous pouvez le faire en écrivant

conda config --remove channels some-channel

Voir

conda config -h

pour plus d'options.

avec tout cela dit, il y a quatre raisons principales pour utiliser le conda-forge canal au lieu de l' defaults canal maintenu par Continuum:

  1. Paquets conda-forge être plus à jour que ceux de la defaults canal
  2. Il y a des paquets sur le conda-forge canal qui ne sont pas disponibles à partir de defaults
  3. Vous préférez utiliser une dépendance telle que openblas (conda-forge) au lieu de mkl (defaults).
  4. si vous installez un paquet qui nécessite une bibliothèque compilée (par exemple, une extension C ou un wrapper autour D'un C de la bibliothèque), il réduisez le risque d'incompatibilités si vous installez tous les paquets dans un environnement à partir d'un seul canal en raison de la compatibilité binaire de la bibliothèque de base C (mais ce conseil peut être périmé/changer dans le futur).
76
répondu darthbith 2018-05-13 17:37:17

il y a des bibliothèques python que vous ne pouvez pas installer avec un simple conda install puisque leur canal n'est pas disponible à moins que vous appliquiez coda-forge. D'après mon expérience, pip est plus générique pour examiner des sources de canaux différentes que conda. par exemple, si vous voulez installer python-constraint vous pouvez le faire via pip install mais pour l'installer via **cond **. vous devez spécifier le canal - conda-forge.

conda install -c conda-forge python-constraint // works

mais pas

conda install python-constraint
0
répondu ewalel 2018-06-22 16:35:04