Comment mettre à niveau vers Python 3.6 avec conda?


172

Je suis nouveau dans la gestion des packages Conda et je souhaite obtenir la dernière version de Python pour utiliser des chaînes f dans mon code. Actuellement ma version est ( python -V):

Python 3.5.2 :: Anaconda 4.2.0 (x86_64)

Comment passer à Python 3.6?


La deuxième réponse est, je pense, la meilleure réponse, en particulier pour ceux qui ont un environnement "maître" / "par défaut" dans lequel le dernier et le meilleur sont continuellement mis à jour.
ericmjl

Réponses:


250

Anaconda n'a pas mis à jour python en interne vers la version 3.6.

a) Méthode 1

  1. Si vous souhaitez mettre à jour, vous tapez conda update python
  2. Pour mettre à jour le type d'anaconda conda update anaconda
  3. Si vous souhaitez mettre à niveau entre une version majeure de python comme la 3.5 à la 3.6, vous devrez faire

    conda install python=$pythonversion$

b) Méthode 2 - Créer un nouvel environnement (meilleure méthode)

conda create --name py36 python=3.6

c) Pour obtenir le dernier python absolu (3.6.5 au moment de l'écriture)

conda create --name py365 python=3.6.5 --channel conda-forge

Vous pouvez voir tout cela d' ici

Référez-vous également à ceci pour forcer la mise à niveau

EDIT: Anaconda a maintenant une version Python 3.6 ici


18
À moins que Continuum n'ait modifié le fonctionnement de conda, vous ne pouvez pas mettre à niveau les principales versions de Python par conda update python. Voir ici: conda.pydata.org/docs/py2or3.html#update-or-upgrade-python
darthbith

14
conda install python = $ pythonversion $ eg conda install python = 3.6
Tim Richardson

11
conda update pythonm'a juste pris de 3.6.5 à 3.7.0. Soigné!
fredrik

Il y a une faute de frappe dans la réponse, méthode 1.3. Cela devrait être conda install python=$pythonversion$avec un seul signe égal.
eze1981

La méthode FYI a) fonctionne également pour changer entre différentes versions de python, tant qu'elle ne rompt aucune dépendance au sein du venv
Spcogg le deuxième

41

La création d'un nouvel environnement installera python 3.6:

$ conda create --name 3point6 python=3.6
Fetching package metadata .......
Solving package specifications: ..........

Package plan for installation in environment /Users/dstansby/miniconda3/envs/3point6:

The following NEW packages will be INSTALLED:

    openssl:    1.0.2j-0     
    pip:        9.0.1-py36_1 
    python:     3.6.0-0      
    readline:   6.2-2        
    setuptools: 27.2.0-py36_0
    sqlite:     3.13.0-0     
    tk:         8.5.18-0     
    wheel:      0.29.0-py36_0
    xz:         5.2.2-1      
    zlib:       1.2.8-3 

2
Si votre installation conda est pour Python 2.7, conda create créera une version 2.7. changer la commande en conda create --name 3point6 python=3(ajouter =3à la fin) crée une version python3.
Jonah Graham

1
Ce sera effectivement le cas. J'ai changé ma réponse pour spécifier python 3.6!
David Stansby

26

J'ai trouvé cette page avec des instructions détaillées pour mettre à niveau Anaconda vers une version majeure plus récente de Python (à partir d'Anaconda 4.0+). Première,

conda update conda
conda remove argcomplete conda-manager

J'ai également eu à conda removecertains paquets ne figurant pas sur la liste officielle:

  • backports_abc
  • belle-soupe
  • blaze-core

Selon les packages installés sur votre système, vous pouvez obtenir des UnsatisfiableErrorerreurs supplémentaires - ajoutez simplement ces packages à la liste de suppression. Ensuite, installez la version de Python,

conda install python==3.6

ce qui prend un certain temps, après quoi un message est indiqué conda install anaconda-client, donc je l'ai fait

conda install anaconda-client

qui dit que c'est déjà là. Enfin, en suivant les instructions,

conda update anaconda

J'ai fait cela dans l'invite de commande Windows 10, mais les choses devraient être similaires sous Mac OS X.


18

Dans le passé, j'ai trouvé assez difficile d'essayer de mettre à niveau sur place.

Remarque: mon cas d'utilisation d'Anaconda est un environnement Python tout-en-un. Je ne me soucie pas des environnements virtuels séparés. Si vous utilisez condapour créer des environnements, cela peut être destructeur car condacrée des environnements avec des liens en dur dans votre Anaconda/envsrépertoire.

Donc, si vous utilisez des environnements, vous souhaiterez peut-être d'abord exporter vos environnements . Après avoir activé votre environnement, faites quelque chose comme:

conda env export > environment.yml

Après avoir sauvegardé vos environnements (si nécessaire), vous pouvez supprimer votre ancien Anaconda (c'est très simple de désinstaller Anaconda):

$ rm -rf ~/anaconda3/

et remplacez-le en téléchargeant le nouvel Anaconda, par exemple Linux, 64 bits:

$ cd ~/Downloads
$ wget https://repo.continuum.io/archive/Anaconda3-4.3.0-Linux-x86_64.sh 

( voir ici pour un plus récent ),

puis l'exécuter:

$ bash Anaconda3-4.3.0-Linux-x86_64.sh 

11

J'utilise un Mac OS Mojave

Ces 4 étapes ont fonctionné pour moi.

  1. conda update conda
  2. conda install python=3.6
  3. conda install anaconda-client
  4. conda update anaconda

0

Meilleure méthode que j'ai trouvée:

source activate old_env
conda env export > old_env.yml

Puis traitez-le avec quelque chose comme ceci:

with open('old_env.yml', 'r') as fin, open('new_env.yml', 'w') as fout:
    for line in fin:
        if 'py35' in line:  # replace by the version you want to supersede
            line = line[:line.rfind('=')] + '\n'
        fout.write(line)

puis éditez manuellement la première ( name: ...) et la dernière ligne ( prefix: ...) pour refléter votre nouveau nom d'environnement et exécutez:

conda env create -f new_env.yml

vous devrez peut-être supprimer ou modifier manuellement la broche de version de quelques packages pour lesquels la version épinglée old_envest jugée incompatible ou manquante pour la nouvelle version de python.

J'aimerais qu'il y ait un moyen intégré et plus simple ...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.