web-dev-qa-db-fra.com

Doit-on utiliser conda-forge ou conda-forge pour les environnements Python?

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

Lequel devrait être utilisé? Conda ou conda-forge? Est-ce que ça importe?

59
justinnoor.io

La réponse courte est que, selon mon expérience générale, peu importe ce que vous utilisez.

La réponse longue:

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

Ici, nous devons faire la distinction, dont je pense que vous ne comprenez pas bien le libellé de la question, entre conda, le gestionnaire de paquets multiplate-forme, et conda-forge, le canal de paquets. Anaconda Inc. (anciennement Continuum IO), les principaux développeurs du logiciel conda, maintiennent également un canal séparé de packages, qui est la valeur par défaut lorsque vous tapez conda install packagename sans modifier aucune option.

Il y a deux façons de changer les options pour les canaux. La première consiste à spécifier un canal chaque fois que vous installez un paquet:

conda install -c some-channel packagename

Bien entendu, le paquet doit exister sur ce canal. Si vous utilisez souvent le même canal, vous voudrez peut-être l'ajouter à votre configuration. Tu peux écrire

conda config --add channels some-channel

pour ajouter le canal some-channel en haut de la liste de configuration channels. Ceci donne à some-channel la priorité la plus élevée (la priorité détermine ( en partie ) quel canal est sélectionné lorsque plusieurs canaux ont un paquet particulier). Pour ajouter le canal à la fin de la liste et lui attribuer 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.

Cela dit, il existe quatre raisons principales pour utiliser le canal conda-forge au lieu du canal defaults maintenu par Anaconda:

  1. Les paquets sur conda-forgepeuvent être plus à jour que ceux sur le canal defaults
  2. Il y a des paquets sur le canal conda-forge qui ne sont pas disponibles à partir de defaults
  3. Vous préféreriez utiliser une dépendance telle que openblas (de conda-forge) au lieu de mkl (de defaults).
  4. Si vous installez un paquet nécessitant une bibliothèque compilée (une extension C ou un encapsuleur autour d’une bibliothèque C, par exemple), il est possible que puisse réduire les risques d’incompatibilités si vous installez tous les paquets dans un environnement à partir d’un seul environnement. canal en raison de la compatibilité binaire de la bibliothèque de base C (mais ce conseil peut être obsolète/changer à l'avenir).
110
darthbith

Le canal conda-forge est l'endroit où vous pouvez trouver des paquetages construits pour conda mais qui ne font pas encore partie de la distribution officielle d'Anaconda.

Généralement, vous pouvez utiliser n'importe lequel d'entre eux.

0
Ashiq Imran

Certaines bibliothèques Python ne peuvent pas être installées avec un simple conda install, leur canal n'étant disponible que si vous appliquez conda-forge. D'après mon expérience, pip est plus générique que d'examiner conda. Par exemple, si vous voulez installer python-constraint, vous pouvez le faire via pip install mais l'installer via ** cond **. vous devez spécifier le canal - conda-forge.

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

mais non 

conda install python-constraint
0
ewalel