Как переименовать virtualenv в Python?

Я ошибся с именем virtualenv при инициализации, используя:

$ virtualenv vnev

Я намеревался создать среду с именем venv. Попробовав переименовать папку vnev в venv, я обнаружил, что это не дает большой поддержки. Имя среды активации по-прежнему переименовывает старый vnev.

$ mv vnev venv
$ . venv/bin/activate
(vnev) $ deactivate

Я хотел бы знать, как перейти к переименованию среды?

Ответ 1

По умолчанию virtualenv не поддерживает переименование среды. Безопаснее просто удалить каталог virtualenv и создать новый с правильным именем. Вы можете сделать это:

  • Активируйте свой virtualenv: source vnev/bin/activate
  • Создайте файл требований .txt из установленных пакетов: pip freeze > requirements.txt
  • Удалить скрипт с ошибками: rm -r vnev/
  • Создайте новый virtualenv с правильным именем: virtualenv venv
  • Активировать новый virtualenv: source venv/bin/activate
  • Установить пакеты из файла требований .txt: pip install -r requirements.txt

Если воссоздание не является вариантом, есть сторонние инструменты, такие как virtualenv-mv, которые могут быть полезны.

В качестве альтернативы вы можете использовать virtualenvwrapper, который предоставляет команду cpvirtualenv для копирования или переименования virtualenvs.

Ответ 2

Если вы используете virtualenvwrapper, это может быть сделано:

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

Кроме того, FYI, чтобы переименовать conda virtualenvironment, проверьте этот вопрос.

Ответ 3

Я сделал это тупым путем, который заключается в изменении имени каталога папки для конкретной виртуальной среды, чтобы изменить имя среды. (Это сработало!) Например, если в моем дистрибутиве есть папка root /anaconda3, а конкретная виртуальная среда находится в каталоге /anaconda3/env/py36, то я бы сделал в терминале следующее

$ mv/anaconda3/env/py36/anaconda3/env/py37.

Затем я проверяю это с помощью команды conda env list, которая действительно дает мне py37 качестве имени новой среды. И, наконец, я убедился, что все в порядке, используя команду conda update -all после активации среды, имя которой только что было изменено.

Ответ 4

Мой ответ похож на создание новой виртуальной среды с зависимостями старой, но эта лаконична.

  1. Клонируйте старую среду (скажем, venv_1) в новую среду (скажем, venv_2), используя conda. conda create -n venv_2 --clone venv_1 Это создает новую среду venv_2, клонирующую venv_1. Отсюда нет отдельной задачи получения пакетов/зависимостей. Достаточно одного шага.

  2. Удалите старую виртуальную среду. [Этот шаг необязателен, если вы все еще хотите сохранить старую среду] rm -rf "полный путь старой виртуальной среды"

Таким образом, в 1/2 шага задача может быть достигнута.