How do I upgrade to Python 3.6 with conda?

I'm new to Conda package management and I want to get the latest version of Python to use f-strings in my code. Currently my version is (python -V):

Python 3.5.2 :: Anaconda 4.2.0 (x86_64) 

How would I upgrade to Python 3.6?

2

10 Answers

Anaconda has not updated python internally to 3.6.

a) Method 1

  1. If you wanted to update you will type conda update python

  2. To update anaconda type conda update conda

  3. If you want to upgrade between major python version like 3.5 to 3.6, you'll have to do

     conda install python=$pythonversion$ 

b) Method 2 - Create a new environment (Better Method)

conda create --name py36 python=3.6 

c) To get the absolute latest python(3.6.5 at time of writing)

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

You can see all this from here

Also, refer to this for force upgrading

EDIT: Anaconda now has a Python 3.6 version here

7

Creating a new environment will install 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 
3

I found this page with detailed instructions to upgrade Anaconda to a major newer version of Python (from Anaconda 4.0+). First,

conda update conda conda remove argcomplete conda-manager 

I also had to conda remove some packages not on the official list:

  • backports_abc
  • beautiful-soup
  • blaze-core

Depending on packages installed on your system, you may get additional UnsatisfiableError errors - simply add those packages to the remove list. Next, install the version of Python,

conda install python==3.6 

which takes a while, after which a message indicated to conda install anaconda-client, so I did

conda install anaconda-client 

which said it's already there. Finally, following the directions,

conda update anaconda 

I did this in the Windows 10 command prompt, but things should be similar in Mac OS X.

1

In the past, I have found it quite difficult to try to upgrade in-place.

Note: my use-case for Anaconda is as an all-in-one Python environment. I don't bother with separate virtual environments. If you're using conda to create environments, this may be destructive because conda creates environments with hard-links inside your Anaconda/envs directory.

So if you use environments, you may first want to export your environments. After activating your environment, do something like:

conda env export > environment.yml 

After backing up your environments (if necessary), you may remove your old Anaconda (it's very simple to uninstall Anaconda):

$ rm -rf ~/anaconda3/ 

and replace it by downloading the new Anaconda, e.g. Linux, 64 bit:

$ cd ~/Downloads $ wget 

(see here for a more recent one),

and then executing it:

$ bash Anaconda3-4.3.0-Linux-x86_64.sh 
0

I'm using a Mac OS Mojave

These 4 steps worked for me.

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

If you want to upgrade the Python version inside your existing environment, activate it first with conda activate <env_name> and then do:

conda install -c anaconda python=<version> 

You might also need to update the dependencies with

conda update --all 
1

Only solution that works was create a new conda env with the name you want (you will, unfortunately, delete the old one to keep the name). Then create a new env with a new python version and re-run your install.sh script with the conda/pip installs (or the yaml file or whatever you use to keep your requirements):

conda remove --name original_name --all conda create --name original_name python=3.8 sh install.sh # or whatever you usually do to install dependencies 

doing conda install python=3.8 doesn't work for me. Also, why do you want 3.6? Move forward with the word ;)


Note bellow doesn't work:

If you want to update the conda version of your previous env what you can also do is the following (more complicated than it should be because you cannot rename envs in conda):

  1. create a temporary new location for your current env:
conda create --name temporary_env_name --clone original_env_name 
  1. delete the original env (so that the new env can have that name):
conda deactivate conda remove --name original_env_name --all # or its alias: `conda env remove --name original_env_name` 
  1. then create the new empty env with the python version you want and clone the original env:
conda create --name original_env_name python=3.8 --clone temporary_env_name 

This is how I mange to get (as currently there is no direct support- in future it will be for sure) python 3.9 in anaconda and windows 10
Note: I needed extra packages so install them, install only what you need

conda create --name e39 python=3.9 --channel conda-forge 

Update

Python 3.9 is available with conda, use below command

conda create --name python=3.9

And it will create your python 3.9 virtual environment simply.

  1. Open Anaconda Powershell Prompt with administrator user.
  2. Type in conda update python.
  3. Wait about 10 min, in this process you may need to type in y in some time.
  4. After completing, check your python version in conda by typing python --version
  5. If it is the newest version, then you can restart your computer.

Best method I found:

source activate old_env conda env export > old_env.yml 

Then process it with something like this:

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) 

then edit manually the first (name: ...) and last line (prefix: ...) to reflect your new environment name and run:

conda env create -f new_env.yml 

you might need to remove or change manually the version pin of a few packages for which which the pinned version from old_env is found incompatible or missing for the new python version.

I wish there was a built-in, easier way...

You Might Also Like