Как переименовать 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
Мой ответ похож на создание новой виртуальной среды с зависимостями старой, но эта лаконична.
-
Клонируйте старую среду (скажем, venv_1) в новую среду (скажем, venv_2), используя conda. conda create -n venv_2 --clone venv_1 Это создает новую среду venv_2, клонирующую venv_1. Отсюда нет отдельной задачи получения пакетов/зависимостей. Достаточно одного шага.
-
Удалите старую виртуальную среду. [Этот шаг необязателен, если вы все еще хотите сохранить старую среду] rm -rf "полный путь старой виртуальной среды"
Таким образом, в 1/2 шага задача может быть достигнута.