2016-10-04 2 views
26

Ich verstehe, dass Conda-Schmiede initiiert wurde, um Pakete zu bauen und zu warten.Soll ich Conda oder Conda Forge beim Erstellen von Anaconda Python-Umgebungen verwenden?

Aber wie können wir bei der Erstellung von Anaconda Python-Umgebungen wissen, wann 'conda-forge' Verse 'conda install' verwendet werden soll, wenn ein Paket in beiden Repositories existiert? Django zum Beispiel kann sowohl mit 'conda install' als auch 'conda-forge' installiert werden.

Welches sollten wir verwenden? Ist es wichtig?

Kann mir jemand eine sehr kurze 'conda-forge for dummies' Lektion geben? Die Dokumente sind sehr knapp.

Dank

Antwort

49

Die kurze Antwort ist, dass, in der Regel in meiner Erfahrung, es, die Sie verwenden, spielt keine Rolle.

Die lange Antwort:

So conda-forge ist ein zusätzlicher Kanal, von dem Paket installiert werden kann. In diesem Sinne ist es nicht spezieller als der Standardkanal oder einer der anderen Hunderte (Tausende?) Von Kanälen, auf 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, die ich denke, Sie sind nicht klar aus Ihrer Formulierung in der Frage, zwischen conda, der plattformübergreifende Paket-Manager und conda-forge, der Paket-Kanal. Continuum IO, die Hauptentwickler der conda Software, verwalten auch einen separaten Paketkanal, der der Standard ist, wenn Sie conda install packagename eingeben, ohne irgendwelche Optionen zu ändern.

Es gibt zwei Möglichkeiten, die Optionen für Kanäle zu ändern. Eines ist ein Kanal angeben, jedes Mal, wenn Sie installieren ein Paket:

conda install -c some-channel packagename 

Natürlich ist das Paket hat auf diesem Kanal existieren. Wenn Sie häufig denselben Kanal verwenden, möchten Sie ihn möglicherweise zu Ihrer Konfiguration hinzufügen. Sie können schreiben,

conda config --add channels some-channel 

den Kanal some-channel an die Spitze der channels Konfigurationsliste hinzuzufügen. Dies gibt some-channel die höchste Priorität (Priorität bestimmt (in part) welcher Kanal ausgewählt wird, wenn mehr als ein Kanal ein bestimmtes Paket hat). Um den Kanal zu dem Ende der Liste hinzufügen und die niedrigste Priorität geben, geben Sie

conda config --append channels some-channel 

Wenn Sie den Kanal entfernen möchten, die Sie hinzugefügt haben, können Sie dies tun, indem er

conda config --remove channels some-channel 

Siehe

conda config -h 

für weitere Optionen.

Mit all das gesagt ist, gibt es vier Hauptgründe, warum die conda-forge Kanal anstelle des defaults Kanal von Continuum beibehalten zu verwenden:

  1. Pakete auf conda-forgekann mehr up-to-date als diejenigen, auf dem defaults Kanal
  2. Es gibt Pakete auf dem conda-forge Kanal, der nicht von defaults
  3. Sie verfügbar sind, würden es vorziehen, eine Abhängigkeit wiezu verwenden 0 (von conda-forge) anstelle von mkl (von defaults).
  4. Wenn Sie ein Paket installieren, das eine kompilierte Bibliothek benötigt (z. B. eine C-Erweiterung oder einen Wrapper um eine C-Bibliothek), kann es die Wahrscheinlichkeit von Inkompatibilitäten verringern, wenn Sie alle Pakete in einer Umgebung von einem installieren Einzelkanal aufgrund der Binärkompatibilität der Basis-C-Bibliothek (dieser Hinweis ist jedoch möglicherweise veraltet/ändert sich in der Zukunft).
+0

Danke! Ich habe zwei verwandte Fragen: 1. Wie kann ich herausfinden, welcher Kanal ist gut zu versuchen und; 2. Nachdem ich auf einem Kanal konfiguriert habe, wie kann ich es auf den Standard zurücksetzen? – Daniel

+0

@Kenny Um Ihre erste Frage zu beantworten, sollten Sie auf https://anaconda.org nach dem gewünschten Paket suchen und sehen, welche Kanäle das Paket haben. Ich habe die Antwort bearbeitet, um deine zweite Frage zu beantworten. Wenn Sie jedoch ein einzelnes Paket von einem Kanal aus installieren möchten, ist es wahrscheinlich einfacher, den Befehl 'conda install -c some-channel packagenname' zu ​​verwenden, um den Befehl zu schreiben – darthbith