Hoe kan ik Anaconda updaten?

Ik heb Anaconda op mijn computer geïnstalleerd en ik'zou het willen updaten. In Navigator kan ik zien dat er verschillende individuele pakketten zijn die kunnen worden bijgewerkt, maar ook een anaconda pakket dat soms een versienummer heeft en soms custom zegt. Hoe moet ik te werk gaan?

Wat 95% van de mensen eigenlijk willen

In de meeste gevallen is wat je wilt doen als je zegt dat je Anaconda wilt updaten, het commando uitvoeren:

conda update --all

(Maar dit moet voorafgegaan worden door conda update -n root conda zodat je de laatste conda versie geïnstalleerd hebt)

Dit zal alle pakketten in de huidige omgeving updaten naar de laatste versie -- met de kleine lettertjes dat het een oudere versie van sommige pakketten kan gebruiken om aan dependency constraints te voldoen (vaak zal dit niet nodig zijn en wanneer het nodig is zal de package plan solver zijn best doen om de impact te minimaliseren).

Dit moet worden uitgevoerd vanaf de command line, en de beste manier om daar te komen is vanuit Anaconda Navigator, dan de "Environments" tab, klik dan op het driehoekje naast de root omgeving, en selecteer "Open Terminal":

Deze operatie zal alleen de ene geselecteerde omgeving bijwerken (in dit geval, de root omgeving). Als u andere omgevingen hebt die u wilt updaten, kunt u het bovenstaande proces herhalen, maar klik eerst op de omgeving. Wanneer deze is geselecteerd staat er een driehoekige marker aan de rechterkant (zie afbeelding hierboven, stap 3). Of vanaf de opdrachtregel kunt u de omgevingsnaam (-n envname) of het pad (-p /path/to/env) opgeven, bijvoorbeeld om uw dspyr omgeving uit de bovenstaande schermafbeelding bij te werken:

conda update -n dspyr --all

Update individuele pakketten

Als u alleen geïnteresseerd bent in het updaten van een individueel pakket, klik dan op de blauwe pijl of het blauwe versienummer in Navigator, bijv. voor astroid of astropy in de schermafbeelding hierboven, en dit zal deze pakketten markeren voor een upgrade. Als u klaar bent moet u op de "Apply" knop klikken:

Of vanaf de opdrachtregel:

conda update astroid astropy

Alleen de pakketten in de standaard Anaconda-distributie bijwerken

Als u zich niet druk maakt om pakketversies en alleen " de laatste set van alle pakketten in de standaard Anaconda-distributie wilt, zolang ze samenwerken"*, dan moet u kijk eens naar deze gist.

Waarom het bijwerken van het Anaconda pakket bijna altijd een slecht idee is

In de meeste gevallen zal het updaten van het Anaconda-pakket in de pakketlijst een verrassend resultaat hebben: u kunt in feite downgraden veel pakketten (in feite is dit waarschijnlijk als het de versie als custom aangeeft). De gist hierboven geeft details.

Conda-omgevingen gebruiken

Uw root omgeving is waarschijnlijk geen goede plaats om te proberen een exacte set van packages te beheren: het zal een dynamische werkruimte zijn met nieuwe packages geïnstalleerd en packages willekeurig geüpdatet. Als je een exacte set van packages nodig hebt, maak dan een conda omgeving om ze te bewaren. Dankzij de conda package cache en de manier waarop file linking gebruikt wordt, is dit typisch i) snel en ii) verbruikt het heel weinig extra schijfruimte. Bijv.

conda create -n myspecialenv -c bioconda -c conda-forge python=3.5 pandas beautifulsoup seaborn nltk

De conda documentatie bevat meer details en voorbeelden.

pip, PyPI, en setuptools?

Niets van dit alles zal helpen met het updaten van pakketten die zijn geïnstalleerd vanaf PyPI via pip of pakketten die zijn geïnstalleerd met python setup.py install. conda list zal je wat hints geven over de pip-gebaseerde Python pakketten die je in een omgeving hebt, maar het zal'niets speciaals doen om ze te updaten.

Commercieel gebruik van Anaconda of Anaconda Enterprise

Het is vrijwel precies hetzelfde verhaal, met de uitzondering dat je misschien niet in staat bent om de root omgeving te updaten als deze door iemand anders is geïnstalleerd (zeg naar /opt/anaconda/latest). Als u niet in staat bent om de omgevingen die u gebruikt te updaten, zou u in staat moeten zijn om te klonen en dan te updaten:

conda create -n myenv --clone root
conda update -n myenv --all
Commentaren (9)

Als u probeert uw Anaconda-versie bij te werken naar een nieuwe, zult u merken dat het uitvoeren van het nieuwe installatieprogramma niet zou werken, omdat het klaagt dat de installatiedirectory niet leeg is.

U zou dus conda moeten gebruiken om te upgraden zoals beschreven in de officiële docs:

conda update conda
conda update anaconda

In Windows, als je een "for all users" installatie hebt gemaakt, kan het nodig zijn om vanaf een Anaconda prompt met Administrator rechten te draaien.

![Klik gewoon met de rechtermuisknop op Anaconda Prompt in het startmenu]

Dit voorkomt de foutmelding:

ERROR conda.core.link:_execute(502): Er is een fout opgetreden tijdens het verwijderen van pakket 'defaults::conda-4.5.4-py36_0'. PermissionError(13, 'Toegang wordt geweigerd')

Commentaren (0)

Open "command or conda prompt" en voer uit:

conda update conda
conda update anaconda

Het is een goed idee om beide commando's twee keer uit te voeren (de een na de ander) om er zeker van te zijn dat alle basisbestanden zijn bijgewerkt.

Dit zou je weer op de laatste 'releases' moeten zetten, die pakketten bevat die door de mensen bij Continuum zijn geselecteerd om goed samen te werken.

Als je de laatste versie van elk pakket wilt draaien (dit kan leiden tot een onstabiele omgeving):

conda update --all 

Hopelijk helpt dit.

Bronnen:

Commentaren (4)