160 votes

Est-ce que conda ou conda-forge devrait être utilisé pour les environnements Python?

Conda and conda-forge sont tous deux des gestionnaires de paquets Python. Quel est le choix approprié lorsque 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 plusieurs dépendances (conda-forge en a beaucoup plus). Il n'y a aucune explication pour ces différences, même pas un simple README.

Lequel devrait être utilisé? Conda ou conda-forge? Est-ce que cela a de l'importance?

13 votes

"Conda et conda-forge sont tous deux des gestionnaires de paquets Python." Je ne pense pas que ce soit vrai. Je ne pense pas que ceux-ci soient même dans la même catégorie de chose. conda est un gestionnaire de paquets et conda-forge est un canal. Peut-être que c'était vrai lorsque cette question a été posée?

258voto

darthbith Points 6033

La réponse courte est que, dans mon expérience en général, cela n'a pas d'importance lequel vous utilisez.

La réponse longue :

Ainsi, 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, ou aucun des autres centaines (milliers ?) de canaux auxquels des gens ont posté des packages. 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, que je pense n'est pas claire d'après votre formulation dans la question, entre conda, le gestionnaire de packages multiplateforme, et conda-forge, le canal de packages. Anaconda Inc. (anciennement Continuum IO), les principaux développeurs du logiciel conda, maintiennent également un canal séparé de packages, qui est celui par défaut lorsque vous tapez conda install nomdupackage sans changer d'options.

Il y a trois façons de changer les options des canaux. Les deux premières se font à chaque fois que vous installez un package et la dernière est persistante. La première consiste à spécifier un canal à chaque fois que vous installez un package :

conda install -c some-channel nomdupackage

Bien sûr, le package doit exister sur ce canal. De cette manière, nomdupackage et toutes ses dépendances seront installés à partir de some-channel. Alternativement, vous pouvez spécifier :

conda install some-channel::nomdupackage

Le package doit toujours exister sur some-channel, mais maintenant, seul nomdupackage sera tiré de some-channel. Tout autre package nécessaire pour satisfaire les dépendances sera recherché dans votre liste par défaut de canaux.

Pour voir votre configuration de canaux, vous pouvez écrire :

conda config --show channels

Vous pouvez contrôler l'ordre dans lequel les canaux sont recherchés avec conda config. Vous pouvez écrire :

conda config --add channels some-channel

pour ajouter le canal some-channel en haut de la liste de configuration des canaux. Cela donne à some-channel la priorité la plus élevée. La priorité détermine (en partie) quel canal est sélectionné lorsque plus d'un canal contient un package 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

Consultez

conda config -h

pour plus d'options.

Cela dit, il y a quatre raisons principales d'utiliser le canal conda-forge plutôt que le canal defaults maintenu par Anaconda :

  1. Les packages sur conda-forge peuvent être plus à jour que ceux du canal defaults
  2. Il y a des packages sur le canal conda-forge qui ne sont pas disponibles sur 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 package qui nécessite une bibliothèque compilée (par ex., une extension C ou un wrapper autour d'une bibliothèque C), cela peut réduire le risque d'incompatibilités si vous installez tous les packages dans un environnement depuis un seul canal en raison de la compatibilité binaire de la bibliothèque C de base (mais ce conseil peut être obsolète/changer à l'avenir).

2 votes

Merci! J'ai deux questions connexes : 1. comment puis-je savoir quel canal est bon à essayer; 2. après avoir configuré un canal, comment puis-je le réinitialiser aux paramètres par défaut?

1 votes

@Kenny Pour répondre à votre première question, vous devriez rechercher le package que vous voulez sur anaconda.org et voir quels canaux ont le package. J'ai modifié la réponse pour répondre à votre deuxième question. Cependant, je noterais également que si vous voulez installer un seul package à partir d'un canal, il est probablement plus facile d'utiliser la manière d'écrire la commande conda install -c some-channel packagename

0 votes

C'est génial! Y a-t-il une comparaison disponible entre conda-forge et conda en termes de # de modules pris en charge, de nouveauté, de couverture, etc.?

13voto

adrin Points 724

Anaconda a changé leurs Conditions d'utilisation afin que les "utilisateurs commerciaux lourds" devraient payer, ce qui n'inclut pas le canal conda-forge.

Vous voudriez probablement rester sur conda-forge si vous ne voulez pas payer pour l'utilisation. Comme indiqué dans la documentation:

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install 

Vous pouvez également utiliser miniforge qui a conda-forge comme canal par défaut, et qui supporte les plateformes ppc64le et aarch64 ainsi que les autres habituelles.

Si vous avez conda installé et que vous souhaitez supprimer les canaux par défaut, vous pouvez utiliser

conda config --show channels

pour voir vos canaux, et vous pouvez utiliser

conda config --remove channels nom-du-canal

pour supprimer un canal.

1 votes

Est-ce que tu sais avec certitude que l'utilisation de conda-forge comme canal par défaut élimine la violation des conditions d'utilisation ? J'ai entendu dire que parce que conda de base utilise le canal par défaut à l'installation, cela pourrait toujours poser problème, qu'en penses-tu ?

0 votes

C'est un bon point, et je ne suis pas sûr à ce sujet. Si on veut être en sécurité, on peut toujours se rabattre sur miniforge.

0 votes

@adrin est Miniconda également gratuit pour un usage commercial?

5voto

Ashiq Imran Points 124

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

En général, vous pouvez utiliser n'importe lequel d'entre eux.

-4voto

ewalel Points 178

Il existe certaines bibliothèques Python que vous ne pouvez pas installer avec un simple conda install car leur canal n'est pas disponible à moins d'appliquer conda-forge. D'après mon expérience, pip est plus générique pour rechercher différentes sources de canaux 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 // fonctionne

mais pas

conda install python-constraint

4 votes

Réponse confuse. L'installation de pip prend le package en dehors de la gestion de package et de vérification des dépendances propres à conda, ce qui signifie que vous devez le gérer (et éventuellement ses dépendances) manuellement et que des commandes telles que conda update --all ne mettront pas à jour le package installé via pip

3 votes

Cette réponse donne de mauvais conseils. Il est mauvaise pratique d'entrelacer les commandes conda et pip dans le même environnement. Utilisez conda install pour tous les paquets exclusivement, sauf si un paquet python particulier n'est pas disponible au format conda. Ensuite, utilisez pip en dernier recours, car pip NE ajoutera PAS le paquet à l'index des paquets conda pour cet environnement. Utiliser conda, puis pip, puis conda, puis pip, puis conda, etc. pour construire un environnement finira par donner un index de l'environnement conda corrompu.

0 votes

@RichLysakowskiPhD Où l'ont-on suggéré de combiner les commandes conda et pip dans le même environnement? -JeanMonet: La réponse ne favorise pas l'un par rapport à l'autre. Il s'agit de comment spécifier parfois le canal 'conda-forge' peut être utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X