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?
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:
- Paquets
conda-forge
être plus à jour que ceux de ladefaults
canal - Il y a des paquets sur le
conda-forge
canal qui ne sont pas disponibles à partir dedefaults
- Vous préférez utiliser une dépendance telle que
openblas
(conda-forge
) au lieu demkl
(defaults
). - 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).
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