2015-07-19 12 views
19

Per m, su OS X, conda update --all spesso le librerie di downgrade - insieme all'aggiornamento di molte.perché l'aggiornamento di conda esegue il downgrade di alcune librerie

È normale? O forse qualcosa nel mio setup?

All'inizio di quest'anno, era un cuscino per molti mesi.

Sorprendentemente, oggi erano diverse librerie HDF5 correlate, numba e llvmlite.

Quindi conda update numba riporta numba alla versione più recente e così via con le altre 8 librerie, ma perché non lo fa conda update --all?

risposta

8

È un problema di compatibilità. Anaconda è un insieme stabile di pacchetti. Quando aggiorni Anaconda, aggiorni a questo elenco stabile.

Tuttavia, quando si aggiornano singoli pacchetti, potrebbero causare problemi di incompatibilità con il resto della distribuzione di Anaconda in modo che non siano considerati stabili. Ecco perché quando si utilizza conda update --all, si arriva alla più recente distribuzione stabile di Anaconda, che potrebbe o meno avere la versione del pacchetto individuale che si desidera.

vedere qui: https://github.com/ContinuumIO/anaconda-issues/issues/39

Edit: Questo comportamento è cambiato. Ora prova ad aumentare la versione di tutti i pacchetti (eccetto Python tra la versione principale/secondaria) in modo che nessun pacchetto sia incompatibile l'uno con l'altro.

vedere qui: http://continuum.io/blog/advanced-conda-part-1#conda-update-all

+0

Grazie Ringil - molto apprezzato. Sono stato sorpreso di non vedere una domanda su Stackoverflow su questo ... avrei dovuto pensare di guardare all'area di github di Continuum. –

+0

Non capisco perché questa sia la risposta accettata, la domanda non menziona mai nemmeno il meta-pacchetto Anaconda? Non è necessario usarlo quando si utilizza il conda tramite miniconda. –

+0

ah, beh, ha un tag anaconda. –

6

Alcune librerie dipendono da specifiche versioni più bassi per scopi di compatibilità. conda update --all proverà ad aggiornare i pacchetti il ​​più possibile, ma manterrà sempre la compatibilità con le restrizioni di versione nei metadati di ciascun pacchetto. Notare che il pacchetto anaconda non entra in gioco qui (presupponendo che si disponga di una versione recente di conda), poiché conda update --all lo ignora.

Sfortunatamente, non è sempre facile vedere cosa dipende da cosa, ma ci sono alcuni trucchi. Un modo è quello di pin ogni pacchetto per una versione desiderata e in esecuzione conda update --all. Dovrebbe generare un suggerimento insoddisfacente che ti darà un'idea di cosa sta causando il problema. Un altro modo è cercare attraverso lo package metadata.

Per numba, posso suggerire che il problema è probabilmente correlato a numbapro. Ci sono alcuni pacchetti che dipendono da hdf5. È possibile utilizzare conda info <package> per visualizzare le dipendenze di un pacchetto (ad esempio conda info h5py).

+0

Grazie Aaron (ho dato il segno di spunta a Ringil ... sei già traboccante dell'amore :-). –

+0

La risposta di Ringil non è strettamente corretta. Come ho notato, il pacchetto 'anaconda' è completamente ignorato da' conda update --all' (questo non era il caso, il che ha causato un sacco di problemi in passato). – asmeurer