2015-07-19 10 views
19

Dla m, na OS X, conda update --all często obniża poziom bibliotek - wraz z aktualizowaniem wielu.Dlaczego konda aktualizacji downgrade niektóre biblioteki

Czy to zwykle? Czy może coś w mojej konfiguracji?

Wcześniej w tym roku była to poduszka na wiele miesięcy.

Co zaskakujące, dziś było to kilka bibliotek związanych z HDF5, numba i llvmlite.

Tak więc conda update numba przynosi numba z powrotem do najnowszej wersji, i tak dalej z innymi 8 bibliotekami, ale dlaczego tak czy inaczej nie robi to conda update --all?

Odpowiedz

8

To jest problem ze zgodnością. Anaconda to stabilny zestaw pakietów. Po aktualizacji Anacondy aktualizujesz tę stabilną listę.

Jednak po aktualizacji pojedynczych pakietów mogą one powodować problemy z kompatybilnością z resztą dystrybucji Anaconda, więc nie są uważane za stabilne. Dlatego, gdy używasz conda update --all, dostajesz się do najnowszej stabilnej dystrybucji Anacondy, która może lub nie może mieć wersji indywidualnego pakietu, który chciałeś.

Zobacz tutaj: https://github.com/ContinuumIO/anaconda-issues/issues/39

Edit: To zachowanie nie zmieniło. Teraz próbuje zwiększyć wersję wszystkich pakietów (z wyjątkiem Pythona między wersją główną/mniejszą), tak aby żadne pakiety nie były ze sobą niezgodne.

Zobacz tutaj: http://continuum.io/blog/advanced-conda-part-1#conda-update-all

+0

Dzięki Ringil - bardzo docenione. Byłem zaskoczony, nie widząc pytania na temat Stackoverflow na ten temat ... Powinienem był pomyśleć, aby spojrzeć na obszar github Continuum. –

+0

Nie rozumiem, dlaczego jest to zaakceptowana odpowiedź, pytanie nigdy nawet nie wspomina o metaklocie Anacondy? Nie trzeba tego używać, gdy używamy conda przez minicondę. –

+0

ah, cóż, ma znacznik anakonda. –

6

Niektóre biblioteki zależy od konkretnych niższych wersjach dla celów zgodności. conda update --all będzie starał się aktualizować pakiety tak bardzo, jak to możliwe, ale zawsze zachowuje zgodność z ograniczeniami wersji w metadanych każdego pakietu. Zauważ, że pakiet anaconda nie wchodzi tutaj w grę (zakładając, że masz najnowszą wersję conda), ponieważ conda update --all to ignoruje.

Niestety, nie zawsze jest łatwo zobaczyć, co zależy od czego, ale są pewne sztuczki. Jednym ze sposobów jest pin każdy pakiet do wersji, którą chcesz i działa conda update --all. Powinien wygenerować wskazówkę dotyczącą niedopuszczalności, która pozwoli ci zorientować się, co jest przyczyną problemu. Innym sposobem jest przeszukiwanie package metadata.

Dla numby mogę zasugerować, że problem prawdopodobnie wiąże się z numbapro. Istnieje kilka pakietów zależnych od hdf5. Możesz użyć conda info <package>, aby zobaczyć zależności pakietu (np. conda info h5py).

+0

Dzięki Aaron (dałem tyknięcie Ringilowi ​​... jesteś już przepełniony miłością :-). –

+0

Odpowiedź Ringila nie jest ściśle prawidłowa. Jak już wspomniałem, pakiet 'anaconda' jest całkowicie ignorowany przez' conda update --all' (tak się nie działo, co spowodowało wiele problemów w przeszłości). – asmeurer

Powiązane problemy