Recientemente descubrí que mi instalación numpy (MacOS, con anaconda) estaba en una versión anterior 1.11.x, en lugar de la última 1.12.0, cuando no se encontró una función documentada en su sitio web. Cuando conda update numpy , me decían que la instalación estaba actualizada . Finalmente, después de intentar forzar conda install numpy=1.12.0 , apareció un error que indicaba que los paquetes tenían problemas de dependencia; resultó que mi instalación de astropy (que ni siquiera uso) requería la versión numpy 1.11.x. Después de desinstalar astropy e instalar numpy , la actualización a la versión 1.12.0 fue exitosa.
Realmente me molesta que anaconda no haya dado ningún tipo de aviso de que estaba ignorando la última versión numpy debido a problemas de dependencia. ¿Hay alguna forma de mostrar, por la fuerza, algún tipo de advertencia o bandera?
Editar : veo en este hilo de problema de github que parece que no hay una forma nativa de hacer esto, en este momento. Aunque tal vez hasta que los desarrolladores agreguen la función, hay una manera un poco complicada de hacerlo con un script BASH, algo así como consultar la última versión disponible, luego instalar y comparar las cadenas de dos versiones.
Está preguntando si es posible escribir código que escanee cada línea de environment.yml e informe si la versión "foo=XYZ" para foo está actualizada, ignorando otras dependencias en el archivo (como astropy) que podrían conflicto y, por lo tanto, reprimirlo.
Sí.
Escriba un script que itere a través de cada línea del paquete, deshaga y luego reconstruya un entorno completamente nuevo con un archivo environment.yml de una línea (o incluso sin ese archivo) e instale la última versión de forma aislada. Lea cualquier versión que resulte ser, compárela con el archivo environment.yml de destino e informe sobre cualquier discrepancia. Si escribe un guión que le resulta útil, publíquelo aquí.
De hecho, diría que usar pip en lugar de conda también resolvería ese problema. Al actualizar un paquete usando pip install --upgrade <package_name> , lo actualizará a la última versión compatible con su sistema operativo y la versión de Python. Sin embargo, si esta actualización provocó que un paquete instalado dejara de ser compatible, pip generará una advertencia que le indicará exactamente eso.