How to rename a virtualenv in Python?

By default virtualenv does not support the renaming of environments. It is safer to just delete the virtualenv directory and create a new one with the correct name. You can do this by:

  1. Activate your virtualenv: source vnev/bin/activate
  2. Create a requirements.txt of currently installed packages: pip freeze > requirements.txt
  3. Delete the misspelled virtualenv: rm -r vnev/
  4. Create a new virtualenv with correct name: virtualenv venv
  5. Activate new virtualenv: source venv/bin/activate
  6. Install packages from requirements.txt: pip install -r requirements.txt

If recreating is not an option there are 3rd party tools like virtualenv-mv that might be helpful.

Alternatively you can use virtualenvwrapper which provides the cpvirtualenv command to copy or rename virtualenvs.


If you use virtualenvwrapper this can be done by:

$ cpvirtualenv <wrong_name> <correct_name>
$ rmvirtualenv <wrong_name>

Also, FYI, to rename a conda virtualenvironment, check out this question.


The steps I use to rename a virtual environment:

  1. Copy the entire virtual environment folder to the new virtual environment.
cp -a old_venv new_venv
  1. Use sed within the new_venv/bin folder to directly change references to old_v.env
cd new_venv/bin
sed -i 's/old_venv/new_venv/g' *
  1. Remove the old virtual environment
rm -rf old_env

Re-installing the ipykernel for jupyter may be required, but otherwise everything seems to work fine