conda search --outdated
Probé el , hay muchos paquetes obsoletos, por ejemplo, scipy es 0.17.1 pero el último es 0.18.0. Sin embargo, cuando hago el conda update --all
. No actualizará ningún paquete.
actualización 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:
#
actualización 2
Puedo actualizar esos paquetes por separado. Que puedo hacer conda update scipy
. ¿Pero por qué no puedo actualizarlos todos de una vez?
conda update --all --alt-hint
ver si da algún resultado ... O simplemente intentarconda update scipy
ver qué sucede (quizás con la--alt-hint
bandera)But why I cannot update all of them in one go?
Probablemente porque tiene al menos un paquete que depende de una versión anterior y, por lo tanto, no se puede actualizar nada.conda update conda
antesconda update --all
Respuestas:
TL; DR: conflictos de dependencia: la actualización de uno requiere (según sus requisitos) degradar a otro
Tienes razón:
es en realidad el camino a seguir 1 . Conda siempre intenta actualizar los paquetes a la versión más reciente de la serie (por ejemplo, Python 2.xo 3.x).
Conflictos de dependencia
Pero es posible que haya conflictos de dependencia (que impiden una actualización adicional). Conda generalmente advierte muy explícitamente si ocurren.
Por ejemplo, X requiere Y <5.0, por lo que Y nunca será> = 5.0
Es por eso que 'no' puedes actualizarlos a todos.
Resolviendo
Para agregar: tal vez podría funcionar, pero una versión más nueva de X que funciona con Y> 5.0 no está disponible en conda. Es posible instalar con pip, ya que hay más paquetes disponibles en pip. Pero tenga en cuenta que pip también instala paquetes si existen conflictos de dependencia y que generalmente rompe su entorno conda en el sentido de que ya no puede instalar de manera confiable con conda. Si lo hace, hágalo como último recurso y después de que todos los paquetes se hayan instalado con conda. Es más bien un truco.
Una forma segura de probar es agregar conda-forge como un canal al actualizar (agregar
-c conda-forge
como marca ) o cualquier otro canal que encuentre que contenga su paquete si realmente necesita esta nueva versión . De esta manera, conda también busca en estos lugares los paquetes disponibles.Teniendo en cuenta su actualización : puede actualizarlos por separado, pero hacerlo no solo incluirá una actualización sino también una degradación de otro paquete. Digamos, para agregar al ejemplo anterior:
X> 2.0 requiere Y <5.0, X <2.0 requiere Y> 5.0
Por lo tanto, actualizar Y> 5.0 implica degradar X a <2.0 y viceversa.
( Este es un ejemplo pedagógico, por supuesto, pero en realidad es el mismo, generalmente solo con dependencias y subdependencias más complicadas )
Por lo tanto, aún no puede actualizarlos a todos haciendo las actualizaciones por separado; las dependencias simplemente no son satisfactorias, por lo que antes o después, una actualización degradará un paquete ya actualizado nuevamente. O rompa la compatibilidad de los paquetes (¡lo que generalmente no desea!), Que solo es posible invocando explícitamente un comando de ignorar dependencias y forzar . Pero eso es solo para hackear los problemas, ¡definitivamente no es el caso del usuario normal!
1 Si realmente desea actualizar los paquetes de su instalación, que generalmente no desea . El comando ejecutado en el entorno base actualizará los paquetes en esto, pero por lo general debe trabajar con entornos virtuales (
conda create -n myenv
y luegoconda activate myenv
). La ejecuciónconda update --all
dentro de dicho entorno actualizará los paquetes dentro de este entorno. Sin embargo, dado que el entorno base también es un entorno, la respuesta se aplica a ambos casos de la misma manera.fuente
Para responder más precisamente a la pregunta:
conda (que es conda para miniconda como para Anaconda) actualiza todo excepto SOLO dentro de una versión específica de un paquete -> mayor y menor. Ese es el paradigma.
En la documentación encontrará "NOTA: Conda se actualiza a la versión más alta de su serie, por lo que Python 2.7 se actualiza a la más alta disponible en la serie 2.xy 3.6 actualizaciones a la más alta disponible en la serie 3.x". Doc
Si Wang no da un ejemplo reproducible, uno solo puede ayudar. por ejemplo, ¿es realmente el entorno virtual que quiere actualizar o Wang podría obtener lo que quiere?
* ¡POR FAVOR lea los documentos antes de ejecutar "actualizar --todos"! Esto no conduce a una actualización de todos los paquetes por naturaleza. Debido a que conda intenta resolver la relación de dependencias entre todos los paquetes en su entorno, esto puede conducir a paquetes DOWNGRADED sin advertencias.
Si solo desea actualizar casi todos, puede crear un archivo pin
antes de ejecutar la actualización.
Si más adelante desea ignorar el archivo en su env para una actualización, puede hacer lo siguiente:
No debes actualizar --todos. Sin embargo, si lo necesita, puede ahorrar para probar esto en un entorno clonado.
El primer paso siempre debe ser hacer una copia de seguridad de su especificación actual:
(pero aun así no siempre hay un enlace a la fuente disponible, como para las extensiones jupyterlab)
A continuación, puede clonar y actualizar:
conda config
actualizar:
Debido a que la idea de conda es agradable pero no está funcionando muy bien en entornos complejos, personalmente prefiero la combinación de
nix-shell (or lorri) and poetry
[como pip / conda superior]) ( introducción poetry2nix ).Finalmente, si realmente necesita trabajar con paquetes que no son compatibles debido a sus dependencias, es posible con tecnologías como NixOS / nix-pkgs .
fuente
conda update -n ENVIRONMENT --all
: Estoy de acuerdo en que esto es lo que él / ella generalmente quiere usar, no para actualizar el entorno base. Sin embargo, no encuentro una explicación en su respuesta sobre esto en absoluto, solo está escrito y no se refiere a la diferencia de usar el comando de la operación en el entorno base.Imagine el gráfico de dependencia de los paquetes, cuando el número de paquetes aumenta, la posibilidad de encontrar un conflicto al actualizar / agregar paquetes es mucho mayor. Para evitar esto, simplemente cree un nuevo entorno en Anaconda.
Sea frugal, instale solo lo que necesita. Para mí, instalé los siguientes paquetes en mi nuevo entorno:
Y tengo 84 paquetes en total.
fuente
si trabaja en MS windows, puede usar el navegador Anaconda. haga clic en el entorno, en el cuadro desplegable, está "instalado" de forma predeterminada. Puede seleccionar "actualizable" y comenzar desde allí
fuente
Para actualizar todos los paquetes posibles que utilicé
conda update --update-all
¡Funciona!
fuente
Resolví este problema con
conda
ypip
.En primer lugar, corro:
conda uninstall qt and conda uninstall matplotlib and conda uninstall PyQt5
Después de eso, abrí el cmd y ejecuté este código que
pip uninstall qt , pip uninstall matplotlib , pip uninstall PyQt5
Por último, debe instalar
matplotlib
en pip por este código quepip install matplotlib
fuente