199 votes

anaconda met à jour tous les paquets possibles?

J'ai essayé le conda search --outdated , il y a beaucoup de paquets obsolètes, par exemple scipy est 0.17.1 mais le dernier est 0.18.0. Cependant, quand je fais le conda update --all . Il ne mettra à jour aucun paquet.

mise à jour 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 tous les mettre à jour en une fois?

308voto

Mayou36 Points 1238

TL;DR: les conflits de dépendance

Vous avez raison:

conda update --all

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 de >= 5.0

C'est pourquoi vous 'ne peut pas' upgrate tous.

Compte tenu de votre mise à jour: Vous pouvez mettre à 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

Si la mise à niveau 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 de 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 l' ignorer-dépendances et de la force-commande. Mais c'est seulement à pirater votre chemin autour de questions, certainement pas la normale à l'utilisateur de cas!

19voto

InLaw Points 578

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 -> majeures et mineures. 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

conda update -n ENVIRONMENT --all

Si vous souhaitez uniquement mettre à jour presque tous, vous pouvez créer un code pin de fichier

echo "conda ==4.0.0" >> ~/miniconda3/envs/py35/conda-meta/pinned
echo "conda numpy 1.7.*" >> ~/miniconda3/envs/py35/conda-meta/pinned

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:

conda update --all --no-pin

3voto

Vindicate Points 184

Imaginez le graphique de dépendance des packages. Lorsque le nombre de packages augmente, le risque de conflit lors de la mise à niveau / l'ajout de packages est beaucoup plus élevé. Pour éviter cela, créez simplement un nouvel environnement dans Anaconda.

Soyez frugal, installez seulement ce dont vous avez besoin. Pour moi, j'ai installé les packages suivants dans mon nouvel environnement:

  • pandas
  • scikit-learn
  • matplotlib
  • carnet
  • keras

Et j'ai 84 paquets au total.

0voto

David Points 31

Si vous travaillez sous MS Windows, vous pouvez utiliser Anaconda Navigator. Cliquez sur l'environnement, dans la liste déroulante, il est "installé" par défaut. Vous pouvez sélectionner "updatable" et commencer à partir de là

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