wake-up-neo.net

Sollte Conda oder Conda-Forge für Python-Umgebungen verwendet werden?

Conda und conda-forge sind beide Python-Paketmanager. Was ist die richtige Wahl, wenn ein Paket in beiden Repositorys vorhanden ist? Django kann zum Beispiel mit einem der beiden installiert werden, aber der Unterschied zwischen beiden besteht in mehreren Abhängigkeiten (Conda-Forge hat viel mehr). Es gibt keine Erklärung für diese Unterschiede, nicht einmal eine einfache README.

Welches sollte verwendet werden? Conda oder Conda-Schmiede? Ist das wichtig?

59
justinnoor.io

Die kurze Antwort ist, dass es meiner Erfahrung nach im Allgemeinen keine Rolle spielt, welche Sie verwenden.

Die lange Antwort:

conda-forge Ist also ein zusätzlicher Kanal, über den Pakete installiert werden können. In diesem Sinne ist es nicht spezieller als der Standardkanal oder einer der anderen Hunderte (Tausende?) Kanäle, auf die die Leute Pakete gepostet haben. Sie können Ihren eigenen Kanal hinzufügen, wenn Sie sich unter https://anaconda.org anmelden und Ihre eigenen Conda-Pakete hochladen.

Hier müssen wir die Unterscheidung zwischen conda, dem plattformübergreifenden Paketmanager, und conda-forge, Dem Paketkanal, treffen, über die Sie sich aus Ihrer Formulierung in der Frage nicht klar fühlen . Anaconda Inc. (ehemals Continuum IO), die Hauptentwickler der Software conda, verwaltet auch einen separaten Paketkanal. Dies ist die Standardeinstellung, wenn Sie conda install packagename Eingeben, ohne die Optionen zu ändern.

Es gibt zwei Möglichkeiten, die Optionen für Kanäle zu ändern. Zum einen muss bei jeder Installation eines Pakets ein Kanal angegeben werden:

conda install -c some-channel packagename

Natürlich muss das Paket auf diesem Kanal existieren. Wenn Sie feststellen, dass Sie häufig denselben Kanal verwenden, möchten Sie ihn möglicherweise zu Ihrer Konfiguration hinzufügen. Du kannst schreiben

conda config --add channels some-channel

um den Kanal some-channel an den Anfang der Konfigurationsliste channels zu setzen. Dies gibt some-channel Die höchste Priorität (die Priorität bestimmt ( teilweise ), welcher Kanal ausgewählt wird, wenn mehr als ein Kanal ein bestimmtes Paket hat). Geben Sie Folgendes ein, um den Kanal am Ende der Liste hinzuzufügen und ihm die niedrigste Priorität zuzuweisen

conda config --append channels some-channel

Wenn Sie den von Ihnen hinzugefügten Kanal entfernen möchten, können Sie dies schriftlich tun

conda config --remove channels some-channel

Sehen

conda config -h

für mehr optionen.

Trotzdem gibt es vier Hauptgründe, den Kanal conda-forge Anstelle des von Anaconda verwalteten Kanals defaults zu verwenden:

  1. Pakete auf conda-forge können aktueller sein als diejenigen auf dem Kanal defaults
  2. Es gibt Pakete im Kanal conda-forge, Die in defaults nicht verfügbar sind.
  3. Sie würden es vorziehen, eine Abhängigkeit wie openblas (von conda-forge) Anstelle von mkl (von defaults) zu verwenden.
  4. Wenn Sie ein Paket installieren, für das eine kompilierte Bibliothek erforderlich ist (z. B. eine C-Erweiterung oder ein Wrapper um eine C-Bibliothek), kann dies das Risiko von Inkompatibilitäten verringern, wenn Sie alle installieren die Pakete in einer Umgebung aus einem einzigen Kanal aufgrund der Binärkompatibilität der Base-C-Bibliothek (dieser Hinweis ist jedoch möglicherweise nicht mehr aktuell/wird möglicherweise in Zukunft geändert).
149
darthbith

Auf dem Conda-Forge-Kanal finden Sie Pakete, die für Conda erstellt wurden, aber noch nicht Teil der offiziellen Anaconda-Distribution sind.

Im Allgemeinen können Sie jeden von ihnen verwenden.

0
Ashiq Imran

Es gibt einige Python-Bibliotheken, die Sie nicht mit einem einfachen conda install installieren können, da ihr Kanal nur verfügbar ist, wenn Sie conda-forge anwenden. Aus meiner Erfahrung ist pip generischer, um in andere Kanalquellen zu schauen als in conda. Wenn Sie beispielsweise python-constraint installieren möchten, können Sie dies über pip install tun, aber über ** cond ** installieren. Sie müssen den Kanal angeben - conda-forge.

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

aber nicht 

conda install python-constraint
0
ewalel