python – How can I rename a conda environment?

The Question :

343 people think this question is useful

I have a conda environment named old_name, how can I change its name to new_name without breaking references?

• See also this post on how to clone a conda environment
• you can’t rename (frustrating!) but you can clone the old env with the new name and delete the old env: conda create --name new_name --clone old_name then delete old one: conda remove --name old_name --all

542 people think this answer is useful

You can’t.

One workaround is to create clone environment, and then remove original one:

(remember about deactivating current environment with deactivate on Windows and source deactivate on macOS/Linux)

conda create --name new_name --clone old_name
conda remove --name old_name --all # or its alias: conda env remove --name old_name



There are several drawbacks of this method:

1. it redownloads packages – you can use --offline flag to disable it,
2. time consumed on copying environment’s files,
3. temporary double disk usage.

There is an open issue requesting this feature.

16 people think this answer is useful

Based upon dwanderson‘s helpful comment, I was able to do this in a Bash one-liner:

conda create --name envpython2 --file <(conda list -n env1 -e )



My badly named env was “env1” and the new one I wish to clone from it is “envpython2”.

10 people think this answer is useful

conda create --name new_name --copy --clone old_name is better

I use conda create --name new_name --clone old_name which is without --copy but encountered pip breaks…

the following url may help Installing tensorflow in cloned conda environment breaks conda environment it was cloned from

6 people think this answer is useful

conda should have given us a simple tool like cond env rename <old> <new> but it hasn’t. Simply renaming the directory, as in this previous answer, of course, breaks the hardcoded hashbangs(#!). Hence, we need to go one more level deeper to achieve what we want.

conda env list
# conda environments:
#
base                  *  /home/tgowda/miniconda3
junkdetect               /home/tgowda/miniconda3/envs/junkdetect
rtg                      /home/tgowda/miniconda3/envs/rtg



Here I am trying to rename rtg –> unsup (please bear with those names, this is my real use case)

$cd /home/tgowda/miniconda3/envs$ OLD=rtg
$NEW=unsup$ mv $OLD$NEW   # rename dir

$conda env list # conda environments: # base * /home/tgowda/miniconda3 junkdetect /home/tgowda/miniconda3/envs/junkdetect unsup /home/tgowda/miniconda3/envs/unsup$ conda activate $NEW$ which python
/home/tgowda/miniconda3/envs/unsup/bin/python



the previous answer reported upto this, but wait, we are not done yet! the pending task is, $NEW/bin dir has a bunch of executable scripts with hashbangs (#!) pointing to the$OLD env paths.

See jupyter, for example:

$which jupyter /home/tgowda/miniconda3/envs/unsup/bin/jupyter$ head -1 $(which jupyter) # its hashbang is still looking at old #!/home/tgowda/miniconda3/envs/rtg/bin/python  So, we can easily fix it with a sed $ sed  -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" $NEW/bin/* # -i.bak created backups, to be safe$ head -1 $(which jupyter) # check if updated #!/home/tgowda/miniconda3/envs/unsup/bin/python$ jupyter --version # check if it works
jupyter core     : 4.6.3
jupyter-notebook : 6.0.3

$rm$NEW/bin/*.bak  # remove backups



Now we are done 💯

I think it should be trivial to write a portable script to do all those and bind it to conda env rename old new.

I tested this on ubuntu. For whatever unforseen reasons, if things break and you wish to revert the above changes:

$mv$NEW  $OLD$ sed  -i.bak "s:envs/$NEW/bin:envs/$OLD/bin:" \$OLD/bin/*



3 people think this answer is useful

You can rename your Conda env by just renaming the env folder. Here is the proof:

You can find your Conda env folder inside of C:\ProgramData\Anaconda3\envs or you can enter conda env list to see the list of conda envs and its location.

1 people think this answer is useful

I’m using Conda on Windows and this answer did not work for me. But I can suggest another solution:

• rename enviroment folder (old_name to new_name)

• open shell and activate env with custom folder:

conda.bat activate "C:\Users\USER_NAME\Miniconda3\envs\new_name"

• now you can use this enviroment, but it’s not on the enviroment list. Update\install\remove any package to fix it. For example, update numpy:

conda update numpy

• after applying any action to package, the environment will show in env list. To check this, type:

conda env list