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

- 6,568
- 4
- 41
- 58

- 16,763
- 6
- 27
- 35
-
See also this post on how to [clone a conda environment](https://stackoverflow.com/q/40700039/4531270) – pylang Nov 22 '19 at 16:43
-
16you 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` – Charlie Parker Sep 28 '20 at 20:00
10 Answers
New answer:
From Conda 4.14 you will be able to use just:
conda rename -n old_name new_name
Although, under the hood, conda rename
still uses [1][2] undermentioned combination of conda create
and conda remove
.
Use the -d
flag for dry-run (not destination, as of v22.11.0)
conda rename -n old_name -d new_name
Old answer:
You can't.
One workaround is to create clone a new environment and then remove the original one.
First, remember to deactivate your current environment. You can do this with the commands:
deactivate
on Windows orsource deactivate
on macOS/Linux.
Then:
conda create --name new_name --clone old_name
conda remove --name old_name --all # or its alias: `conda env remove --name old_name`
Notice there are several drawbacks of this method:
- It redownloads packages (you can use
--offline
flag to disable it) - Time consumed on copying environment's files
- Temporary double disk usage
There is an open issue requesting this feature.

- 29,945
- 39
- 128
- 170

- 16,763
- 6
- 27
- 35
-
12so as to leave some work for those who fork conda and thereby making them understand much more en route :P :D – Saravanabalagi Ramachandran Jul 03 '17 at 06:40
-
2@silgon Well, it's [not](https://github.com/conda/conda/issues/3097#issue-165962791) my solution (but it's relatively obvious one). I just gathered this information on SO for better searchability - the github issue thread didn't showed up in google searches. – pkowalczyk Jul 14 '17 at 00:16
-
5Another way is to clone the environment `conda create --name new_name --clone old_name` then you can remove the old one. – tupui Nov 22 '17 at 14:01
-
8Word of warning - I tried doing this, and ran into bizarre errors - my `.bashrc` no longer worked, and trying to run `pytest` would fail, trying to reference the now-removed environment. I tried new shells and restarting with no luck. Ended up having to blow away the new environment, then just start with a clean install. Slower, but seems to actually work now. – dwanderson Feb 27 '18 at 18:09
-
1@CharlieParker -- as it turns out, there are a number of hard-coded paths that conda uses in environments. I think I was once able to successfully `grep` and `sed` my way through it, but it wasn't easy. If I can figure out out and make it consistent, perhaps I submit a PR. – abalter Nov 26 '18 at 18:43
-
6@dwanderson +5000 as I was going to try using this answer but instead I'm just going to pull the bandaid right off and recreate my badly named env from scratch. – bgoodr Feb 02 '19 at 20:44
-
1It takes quite long - I think you could update your answer to include `--offline` by default, and suggest omitting it if someone wants "freshly downloaded packages" at any cost (e.g. the source environment is somehow damaged). Maybe, if you don't mind wasting some disk space, you can keep the old environment around (I've done that actually). – Tomasz Gandor Sep 05 '19 at 08:48
-
Now on macOS (and presumably on linux), you can also simply use `deactivate`. (`source deactivate` is no longer necessary.) – TransferOrbit Feb 22 '20 at 20:35
-
You might want to add that it is a good idea to first activate `old_name` before cloning. I didn't do that and the clone included some incorrect versions from the current active environment. – Irv Feb 24 '20 at 20:24
-
Nice. But I got `The following packages cannot be cloned out of the root environment:`, which does not bode well, but as there's no other way, so be it! – PatrickT Feb 11 '22 at 18:01
-
1Maybe update the answer, issue is resolved with a new conda rename option. https://github.com/conda/conda/pull/11496 – Datapumpernickel Jul 20 '22 at 15:25
-
Worked perfectly for me, thank you. One additional note: The directory (and some "trash" files in it) of the old environment won't be removed from the file system with `conda remove` or `conda env remove`. This is another difference to the upcoming `conda rename` method. – msa Aug 02 '22 at 09:54
-
-
-
If you are using conda straight after download, which is v4.12 for me, it don't have `rename` function, upgrade it first, mine was upgraded with long jump to v22.11.0 --- and if you happened to create the environment without name, you can use flag `-p`, for example `conda rename -p c:\Users\john\python\env general-env` – Windo Dec 03 '22 at 02:37
-
2Note that you need at least one conda environment active when you run this command - it will fail otherwise. Something as simple as `conda activate base` first, then `conda rename -n old_name new_name` will do the trick. https://github.com/conda/conda/issues/11850#issuecomment-1257215879 – meenaparam Feb 24 '23 at 09:15
-
I ran into `TypeError: expected str, bytes or os.PathLike object, not NoneType`. As per [this github issue](https://github.com/conda/conda/issues/11850#issuecomment-1257215879). some unrelated conda env need to be active when running `conda rename` command. I activated `base` env, ran the command and it worked. – Manavalan Gajapathy Aug 23 '23 at 17:48
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

- 441
- 4
- 2
-
1mvenv () { conda create --name $2 --copy --clone $1 ; conda remove --name $1 --all ;} – user3673 Sep 20 '20 at 04:32
-
(Put that at the end of ~/.bashrc and you apparently have the requested feature. Feel free to incorporate it in your answer since I couldn't have conceived of your solution involving both --clone and --copy.) – user3673 Sep 20 '20 at 04:34
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 breaks the hardcoded hashbangs(#!).
Hence, we need to go one more level deeper to get what we want.
conda env list
# conda environments:
#
base * /home/tgowda/miniconda3
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
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/*

- 11,249
- 5
- 50
- 57
-
9If trivial it would be great for you to contribute this to the code base! Many would appreciate it (myself included) – Shawn Aug 29 '20 at 21:44
-
The sed -i '' "s/old/new" $NEW/bin/* will encounter "not a regular file" error, for me. To replace all the sheband lines in all regular files, I have to use: $ find $NEW/bin/* -maxdepth 1 -type f -exec sed -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" {} \; to escape the non-regular files. – Sam Tseng Mar 09 '22 at 16:23
-
What about binary libraries that are relocated using rpath? It isn't simple to relocate conda environments because there is so much magic behind the scenes to make it work like an isolated environment. – Bradley Kreider Jun 10 '22 at 19:06
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".
-
4Ran into an error saying `PackagesNotFoundError: The following packages are not available from current channels` with this script. This script probably works only when you don't have packages that are installed with pip and that are not available in conda in the existing environment? – Ethan Chen Apr 02 '20 at 16:42
As the answer from @pkowalczyk mentioned some drawbacks: In my humble opinion, the painless and risk-free (workaround) way is following these steps instead:
- Activate & Export your current environment
conda env export > environment.yml
- Deactivate current conda environment. Modify the
environment.yml
file and change the name of the environment as you desire (usually it is on the first line of theyaml
file) - Create a new conda environment by executing this
conda env create -f environment.yml
This process takes a couple of minutes, and now you can safely delete the old environment.
P.S. nearly 5 years and conda still does not have its "rename" functionality.

- 1,482
- 21
- 33
-
I'm liking this answer, and in the middle of executing it. I believe, though, that the `prefix: ...` line should also be changed to the new name, so the env folder isn't re-used...? – Steve Henty Apr 04 '22 at 00:04
-
** UPDATE ** - changing the prefix in environment.yml was NOT honored. But adding the `-p` option worked fine: `conda env create -f environment.yml -p /path/to/env` – Steve Henty Apr 04 '22 at 02:56
-
You don't have to change anything, instead, you provide `--name` while creating new environment. Note that your environment file should end with `.yml`, not `.txt`. – Long Apr 14 '22 at 07:07
-
Make sure that you change both the first line (`name:
` ) and the final line (`prefix: /dir1/dir2/../dirn/ – Ottpocket Jun 17 '22 at 14:50`).
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
tonew_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

- 872
- 10
- 21

- 79
- 1
- 2
For that one can access the base/root environment and use conda rename
.
Assuming one's environment is stack
and one wants the name lab
, one can do the following
conda rename -n stack lab
Other alternatives include
conda rename --name stack lab
conda rename -p path/to/stack lab
conda rename --prefix path/to/stack lab
Notes:
One cannot rename the base environment.
One cannot rename an active environment. If one is in the prompt of the environment
stack
one won't be able to do the operations above, and it will give aCondaEnvException
CondaEnvException: Cannot rename the active environment
- If one tries to rename using an existing environment name, one will get a
CondaEnvException
. Using the case above, one will get
CondaEnvException: The environment 'lab' already exists. Override with --force.

- 11,752
- 3
- 54
- 83
According to the answer of Thamme Gowda, the following steps work for me on my MacBook Pro:
- Change the folder name of the old env name into a new env name.
- Replace all the old env name in the shebang lines of all regular files under the bin folder in the new env folder.
The commands are:
$ conda deactivate
$ OLD=old_name
$ NEW=new_name
$ cd /Users/my_username/anaconda3/envs/
$ mv $OLD $NEW
$ find $NEW/bin/* -maxdepth 1 -type f -exec sed -i.bak "s:envs/$OLD/bin:envs/$NEW/bin:" {} \;
$ conda activate new_name
Check if the shebang line is correctly replaced:
$ head -1 $(which jupyter)
#!/Users/my_username/anaconda3/envs/new_name/bin/python

- 178
- 6
Simply rename the environment's folder
This was the easiest solution to rename a conda environment on Windows. It likely works on Mac too (just haven't tested it). I just renamed my old environment directory and it worked:
mv ~/anaconda3/envs/old_name ~/anaconda3/envs/new_name
Source: https://github.com/conda/conda/issues/3097#issuecomment-314527753

- 6,840
- 3
- 35
- 26
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.

- 423
- 6
- 13
-
4
-
7Bad idea: https://stackoverflow.com/a/52717925/1506477 explains why – fantabolous Dec 04 '20 at 05:34
-
-
this does seem to work on linux and the "Bad idea" link leads to an answer to the current question that never actually mentions why this is a bad idea except for one comment that says that conda stores some hard-coded paths (which does answer it, but is not very specific - which paths precisely? maybe it's something that can be ignored?). – Yuri Feldman Jun 28 '22 at 15:09