anaconda mise à jour de tous les régimes possibles?
J'ai essayé le conda search --outdated
, il y a beaucoup de paquets obsolètes, par exemple le scipy est 0.17.1 mais la dernière est 0.18.0. Cependant, quand je fais la conda update --all
. Il ne mettra pas à jour les paquets.
mise à jour de 1
conda update --all --alt-hint
Fetching package metadata .......
Solving package specifications: ..........
# All requested packages already installed.
# packages in environment at /home/user/opt/anaconda2:
#
mise à jour 2
Je peux mettre à jour ces paquets séparément. Je peux faire conda update scipy
. Mais pourquoi je ne peux pas mettre à jour tous d'entre eux en une seule fois?
- Il est peut-être parce que la dernière scipy a un conflit de dépendance. Par exemple, il peut exiger NumPy 1.11, mais vous avez un autre package qui nécessite NumPy 1.10. Vous pouvez essayer de
conda update --all --alt-hint
et voir si ça donne quelque sortie... Ou juste essayer deconda update scipy
et de voir ce qui se passe (peut-être avec le--alt-hint
drapeau) - veuillez vous référer à la mise à jour 1. Pas d'infos utiles.
But why I cannot update all of them in one go?
Probablement parce que vous avez au moins un paquet qui dépend d'une version plus ancienne et donc plus rien ne peut être mis à jour.- Est-il possible de savoir qui l'on dépend de vieux paquets?
- Après près d'un an et aucune autre réponse, je pense qu'il serait approprié d'accepter ce que la bonne réponse, vous ne pensez pas? Ou n'est-elle pas s'appliquer à votre cas, en quelque sorte?
- Je recommande d'exécuter
conda update conda
avantconda update --all
Vous devez vous connecter pour publier un commentaire.
TL;DR: les conflits de dépendance
Vous avez raison:
est en fait le chemin à parcourir. Conda essaie toujours de mettre à niveau les paquets de la version la plus récente de la série (à dire avec Python 2.x ou 3.x). Mais il est possible qu'il existe des conflits de dépendance (qui de prévenir une nouvelle mise à niveau). Conda généralement avertit très explicitement, si elles se produisent.
par exemple X implique Y <5.0, donc Y aura jamais >= 5.0
C'est pourquoi vous 'ne peut pas' la mise à jour de tous les.
D'ajouter: peut-être que ça pourrait fonctionner, mais une version plus récente de X de travail avec Y > 5.0 n'est pas disponible dans conda. Il est possible d'installer avec le pip, depuis plus de paquets sont disponibles dans le pep. Mais sachez que le pip également installe les paquets si les conflits de dépendance existent!
Un moyen sûr que vous pouvez essayer d'ajouter conda-forge comme un canal lorsque la mise à jour (ajouter
-c conda-forge
comme un drapeau) ou tout autre canal que vous trouvez que contient votre colis si vous avez vraiment besoin de cette nouvelle version. De cette façon, conda fait également de la recherche dans ce lieux pour les paquets disponibles., Compte tenu de votre mise à jour: Vous peut de mise à niveau à chacune d'elles séparément, mais cela ne sera pas seulement inclure une mise à niveau, mais aussi un abaissement de la notation d'un autre paquet. Dire, à ajouter à l'exemple ci-dessus:
X > 2.0 requiert Y < 5.0, X < 2.0 requiert Y > 5.0
Donc la mise à niveau de Y > 5.0 implique le déclassement X < 2.0 et vice versa.
(c'est un exemple pédagogique, bien sûr, mais c'est la même chose dans la réalité, habituellement juste plus compliqué dépendances et sous-dépendances)
Si vous ne pouvez toujours pas de mise à niveau tous en faisant les mises à jour séparément; les dépendances sont tout simplement pas satisfiable plus tôt ou plus tard, une mise à niveau mise à niveau inférieur déjà mis à niveau package de nouveau. Ou de casser la compatibilité des paquets (qui d'habitude vous ne voulez pas!), ce qui n'est possible que par référence explicitement une ignorer les dépendances et force-commande. Mais c'est seulement à hack votre chemin autour de questions, certainement pas la normale à l'utilisateur de cas!
Pour répondre plus précisément à la question:
conda (qui est conda pour miniconda comme pour Anaconda) les mises à jour de tous, mais SEULEMENT à l'intérieur d'une version particulière d'un paquet -> majeur et mineur. C'est le paradigme.
Dans la documentation, vous trouverez des "REMARQUE: Conda mises à jour à la version la plus récente de sa série, de sorte que Python 2.7 mises à jour à la plus élevée disponible dans le 2.la série x et de 3,6 mises à jour disponibles le plus élevé dans le 3.x de la série."
doc
Si Wang n'a pas donne un exemple reproductible, on ne peut que les aider.
par exemple, est-il vraiment l'environnement virtuel, il veut mettre à jour ou pourrait Wang obtenir ce qu'il/elle veut avec
Si vous souhaitez mettre à jour presque tous, vous pouvez créer un code pin de fichier
avant d'exécuter la mise à jour.
Si plus tard vous souhaitez ignorer le fichier dans votre env pour une mise à jour, vous pouvez le faire:
Imaginer le graphe de dépendance de colis, lorsque le nombre de paquets fur et à mesure, la chance de rencontrer un conflit lorsque la mise à jour et l'ajout de packages est beaucoup plus élevé. Pour éviter cela, il suffit de créer un nouvel environnement dans Anaconda.
Être frugal, n'installez que ce dont vous avez besoin. Pour moi, j'ai installé les paquets suivants dans mon nouvel environnement:
Et j'ai 84 paquets au total.
si vous travaillez sous windows, vous pouvez utiliser Anaconda navigator. cliquez sur l'environnement, dans la zone de liste déroulante, c'est "installé" par défaut. Vous pouvez sélectionner "mis à jour" et à partir de là
De mettre à jour tous les régimes possibles, j'ai utilisé
conda update --update-all
Ça marche!!!
J'ai résolu ce problème avec
conda
etpip
.Tout d'abord, je lance:
conda uninstall qt and conda uninstall matplotlib and conda uninstall PyQt5
Après cela, j'ai ouvert le cmd et d'exécuter ce code que
pip uninstall qt , pip uninstall matplotlib , pip uninstall PyQt5
Enfin, Vous devez installer
matplotlib
dans le pep par le présent code quipip install matplotlib