Как удалить venv или virtualenv на Mac

Удалить venv на Mac безопасно: документация Python называет виртуальное окружение одноразовым, его легко удалить и создать заново, а вашего кода в нём нет. С библиотеками для машинного обучения одно окружение легко занимает несколько гигабайт. Здесь — что сохранить заранее, чтобы потом создать его снова, как удалить окружение и как его вернуть.

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ
  1. Откройте MacWashing и выберите Сборка мусора в боковом меню.
  2. Нажмите Начать сканирование.
  3. Просмотрите находки и нажмите Очистить. Всё спорное остаётся без галочки.

Бесплатная пробная версия · macOS 14 и новее

Что лежит в venv

Виртуальное окружение — это папка со ссылкой на Python и всеми пакетами, которые вы в него установили. С библиотеками для машинного обучения одно окружение легко занимает несколько гигабайт. Вашего кода в нём нет, поэтому при удалении не теряется ничего, что нельзя установить снова.

Сначала сохраните список пакетов

Если в проекте есть requirements.txt, pyproject.toml или файл блокировки вроде uv.lock или poetry.lock, окружение можно создать по нему заново. Если ничего такого нет, активируйте окружение в папке проекта:

source .venv/bin/activate

Затем сохраните список установленных пакетов с версиями в requirements.txt:

python3 -m pip freeze > requirements.txt

Как удалить venv

  1. Если окружение активно в Терминале, введите deactivate и нажмите Return. Закройте редактор кода, если он пользуется этим окружением.
  2. Откройте папку проекта в Finder. Папка .venv скрыта: нажмите Shift-Command-. (точка), чтобы показать скрытые файлы.
Finder со скрытыми файлами: выделена папка .venv проекта
  1. Переместите папку .venv или venv в Корзину и очистите Корзину.

Или в Терминале, в папке проекта. Эта команда сразу и безвозвратно удаляет папку .venv со всеми пакетами. Код и файл со списком пакетов остаются:

rm -rf .venv

Окружения, которые хранятся отдельно от проектов, обычно лежат в ~/.virtualenvs, каждое в своей папке: удалите папку ненужного. Окружения conda — не venv: удаляйте их командами самой conda.

Как создать venv заново

В папке проекта создайте новое окружение:

python3 -m venv .venv

Активируйте его командой source .venv/bin/activate и установите пакеты из файла со списком:

python3 -m pip install -r requirements.txt

Если проект описан в pyproject.toml, вместо этого выполните python3 -m pip install --editable .. В проекте на uv команда uv sync сама создаёт .venv и ставит всё из uv.lock.

pip по возможности берёт пакеты из своего кэша, поэтому это быстрее первой установки. Если вы заодно очистили кэш pip, всё скачается заново.

А с MacWashing это в один клик

MacWashing, раздел «Сборка мусора»: найдены мусор Xcode, пользовательский кэш, установщики и журналы, к очистке 22,83 ГБ

Сборка мусора в MacWashing показывает в «Зависимостях проектов» папки .venv и venv проектов на Python, которые вы не меняли 90 дней, — без галочки: заново ставить пакеты долго и нужен интернет, поэтому решаете вы. Кэш программ и инструментов разработчика очищается за тот же проход.

Бесплатная пробная версия · macOS 14 и новее

Вопросы и ответы

Удалит ли MacWashing мои файлы при очистке?

Нет. Он удаляет только то, что может сопоставить с известной программой или известным видом мусора, и только там, где программы оставляют файлы; macOS и файлы Apple не затрагиваются. Всё спорное помечено и остаётся без галочки, пока вы не решите.

Что будет с открытыми программами?

Если файлы заняты открытой программой, MacWashing подождёт, пока она закроется, или закроет её по вашей команде, а после очистки откроет снова.

Это бесплатно?

Да, в пробном режиме: Сборка мусора и Деинсталлятор вместе освобождают до 25 ГБ, без аккаунта и карты.

Безопасно ли удалять venv?

Да, если пакеты можно установить снова: сохраните файл со списком пакетов или файл блокировки проекта. Вашего кода внутри окружения нет.

Есть ли команда, чтобы удалить virtualenv?

Нет. Ни у venv, ни у virtualenv её нет: удаляется папка. deactivate только выключает окружение в текущем окне Терминала.

Можно ли вместо удаления переместить или переименовать venv?

Нет. venv помнит путь, по которому его создали, и после переноса перестаёт работать. Документация Python советует создать новое окружение на новом месте, а старое удалить.