TL; DR: Abhängigkeitskonflikte: Für die Aktualisierung eines Konflikts muss (aufgrund seiner Anforderungen) ein anderer heruntergestuft werden
Du hast recht:
conda update --all
ist eigentlich der richtige Weg 1 . Conda versucht immer, die Pakete auf die neueste Version der Serie zu aktualisieren (z. B. Python 2.x oder 3.x).
Abhängigkeitskonflikte
Es ist jedoch möglich, dass es Abhängigkeitskonflikte gibt (die ein weiteres Upgrade verhindern). Conda warnt normalerweise sehr explizit, wenn sie auftreten.
zB X erfordert Y <5,0, also wird Y niemals> = 5,0 sein
Deshalb können Sie nicht alle aktualisieren.
Lösung
Zum Hinzufügen: Vielleicht könnte es funktionieren, aber eine neuere Version von X, die mit Y> 5.0 arbeitet, ist in conda nicht verfügbar. Es ist möglich, mit pip zu installieren, da mehr Pakete in pip verfügbar sind. Beachten Sie jedoch, dass pip auch Pakete installiert, wenn Abhängigkeitskonflikte bestehen, und dass dies normalerweise Ihre Conda-Umgebung in dem Sinne zerstört, dass Sie mit Conda nicht mehr zuverlässig installieren können. Wenn Sie dies tun, tun Sie dies als letzten Ausweg und nachdem alle Pakete mit conda installiert wurden. Es ist eher ein Hack.
Ein sicherer Weg, den Sie versuchen können, ist das Hinzufügen von conda-forge als Kanal beim Upgrade (Hinzufügen -c conda-forge
als Flag) oder eines anderen Kanals, der Ihr Paket enthält, wenn Sie diese neue Version wirklich benötigen . Auf diese Weise sucht conda auch an diesen Stellen nach verfügbaren Paketen.
Berücksichtigen Sie Ihr Update : Sie können sie jeweils einzeln aktualisieren. Dazu gehört jedoch nicht nur ein Upgrade, sondern auch ein Downgrade eines anderen Pakets. Zum obigen Beispiel hinzufügen:
X> 2.0 erfordert Y <5.0, X <2.0 erfordert Y> 5.0
Ein Upgrade von Y> 5.0 bedeutet also ein Downgrade von X auf <2.0 und umgekehrt.
( Dies ist natürlich ein pädagogisches Beispiel, aber in Wirklichkeit ist es dasselbe, normalerweise nur mit komplizierteren Abhängigkeiten und Unterabhängigkeiten. )
Sie können also immer noch nicht alle aktualisieren , indem Sie die Upgrades separat durchführen. Die Abhängigkeiten sind einfach nicht zufriedenstellend, so dass früher oder später ein Upgrade ein bereits aktualisiertes Paket erneut herunterstufen wird. Oder brechen Sie die Kompatibilität der Pakete (die Sie normalerweise nicht wollen!), Was nur durch explizites Aufrufen eines Ignorier-Abhängigkeits- und Force- Befehls möglich ist. Aber das ist nur hacken Sie Ihren Weg um Probleme, auf jeden Fall nicht die normale Benutzer Fall!
1 Wenn Sie die Pakete Ihrer Installation tatsächlich aktualisieren möchten, was normalerweise nicht der Fall ist . Der in der Basisumgebung ausgeführte Befehl aktualisiert die darin enthaltenen Pakete. In der Regel sollten Sie jedoch ( conda create -n myenv
und dann conda activate myenv
) mit virtuellen Umgebungen arbeiten . Durch Ausführen conda update --all
in einer solchen Umgebung werden die Pakete in dieser Umgebung aktualisiert . Da die Basisumgebung jedoch auch eine Umgebung ist, gilt die Antwort für beide Fälle auf die gleiche Weise.
conda update --all --alt-hint
sehen, ob es eine Ausgabe gibt ... Oder versuchen Sie einfach zuconda update scipy
sehen, was passiert (vielleicht mit der--alt-hint
Flagge)