2-minute recipe: How to rollback your conda environment

Written by sriramjaju | Published 2018/09/11
Tech Story Tags: python | anaconda | data-science | machine-learning

TLDRvia the TL;DR App

I was working on a personal Machine learning project for which I was using Anaconda environment with python 2.7(yes I know) because of some dependencies.

I was trying to upgrade the sklearn library and I accidentally updated Python to 3.6. I was about to delete my whole environment and recreate it again from YAML file(thank god I had that), but then I referred conda documentation and there it was, the magic command to save me from all this trouble.

# List the history of each change to the current environment conda list --revisions

# Restore environment to a previous revision conda install --revision 2

The best way to explain is by a quick example. If you run _conda list –revision_, you’ll get an output like this:

2017-04-18 23:29:36  (rev 1)     requests  {2.12.3 -> 2.13.0}2018-05-30 19:41:47  (rev 2)     mkl  {11.3.3 -> 2018.0.2}     numpy  {1.11.2 -> 1.14.3}     pip  {9.0.1 -> 10.0.1}     python  {2.7.12 -> 3.6.5}     scikit-learn  {0.17.1 -> 0.19.1}     scipy  {0.18.1 -> 1.1.0}     setuptools  {27.2.0 -> 39.1.0}     wheel  {0.29.0 -> 0.31.1}    +blas-1.0    +certifi-2018.4.16    +icc_rt-2017.0.4    +intel-openmp-2018.0.0    +mkl_fft-1.0.1    +mkl_random-1.0.1    +numpy-base-1.14.3    +vc-14    +vs2015_runtime-14.0.25123    +wincertstore-0.2

As you can see in the output that it list each revision along with updated packages(old version -> new version) and newly added packages(the one with a + symbol). So now you know what changes were make in each revision, you can safely rollback to the previous versions of your environment by using conda install –revision _revision number_.

In my case, I reverted to rev 1, so after rollback when I run _conda list –revisions_ again, I can see the changes done in rollback.

2018-05-30 20:08:46  (rev 3)     mkl  {2018.0.2 -> 11.3.3}     numpy  {1.14.3 -> 1.11.2}     pip  {10.0.1 -> 9.0.1}     python  {3.6.5 -> 2.7.12}     scikit-learn  {0.19.1 -> 0.17.1}     scipy  {1.1.0 -> 0.18.1}     setuptools  {39.1.0 -> 27.2.0}     wheel  {0.31.1 -> 0.29.0}    -blas-1.0    -certifi-2018.4.16    -icc_rt-2017.0.4    -intel-openmp-2018.0.0    -mkl_fft-1.0.1    -mkl_random-1.0.1    -numpy-base-1.14.3    -vc-14    -vs2015_runtime-14.0.25123    -wincertstore-0.2

You can see that the changes for revision 3 are just the inverse of revision 2.

This comes handy if you accidentally screw up your environment.

More info:

Conda User Guide: https://conda.io/docs/user-guide/tasks/manage-environments.html

Conda Cheat Sheet: https://conda.io/docs/_downloads/conda-cheatsheet.pdf

If you have any suggestions let me know on twitter: @Sriramjaju

Namaste!


Written by sriramjaju | AI ML Enthusiast
Published by HackerNoon on 2018/09/11