Как очистить виртуальные окружения

PythonBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы изучите основные практики управления виртуальными окружениями Python. Мы рассмотрим, как создавать изолированное окружение для проекта, устанавливать конкретные зависимости, удалять ненужные пакеты и, в конечном итоге, удалять окружение для освобождения дискового пространства. Эти навыки являются основополагающими для поддержания чистого и организованного рабочего процесса разработки.

Создание и активация виртуального окружения

Сначала давайте создадим изолированное окружение для демонстрационного проекта. Использование виртуального окружения гарантирует, что пакеты для этого проекта не будут конфликтовать с пакетами для других проектов или с системной установкой Python. Мы будем использовать модуль venv, который является стандартным инструментом, входящим в состав Python.

Скрипт настройки уже создал для нас каталог проекта по адресу /home/labex/project/my_web_app. Перейдем в него.

cd my_web_app

Теперь создадим виртуальное окружение с именем venv внутри этого каталога. Общепринятой практикой является именование каталога окружения venv.

python3 -m venv venv

Эта команда создает каталог venv, содержащий новую установку Python. Вы можете увидеть его содержимое, выполнив:

ls -F venv/

Вы должны увидеть подкаталоги, такие как bin/, include/, lib/, и конфигурационный файл.

bin/  include/  lib/  lib64@  pyvenv.cfg

Чтобы начать использовать это окружение, вам нужно его "активировать".

source venv/bin/activate

После выполнения этой команды вы заметите, что приглашение вашей оболочки изменится и будет включать (venv), указывая на то, что виртуальное окружение активно. Любые команды python или pip, которые вы теперь выполните, будут использовать исполняемые файлы и пакеты внутри этого окружения.

Вы можете проверить это, проверив путь к исполняемому файлу Python:

which python

Вывод будет указывать на двоичный файл Python внутри вашего каталога venv.

/home/labex/project/my_web_app/venv/bin/python

Установка и изоляция зависимостей

При активном виртуальном окружении мы можем установить зависимости проекта. Для вас был создан файл requirements.txt, который содержит список необходимых пакетов.

Установите пакеты с помощью pip:

pip install -r requirements.txt

Pip загрузит и установит flask, requests и их зависимости в venv.

Чтобы увидеть пакеты, установленные конкретно в этом окружении, используйте pip list:

pip list

Вы увидите flask, requests и другие пакеты, которые только что были установлены.

Package            Version
------------------ --------
certifi            ...
charset-normalizer ...
click              ...
Flask              2.2.2
idna               ...
itsdangerous       ...
Jinja2             ...
MarkupSafe         ...
pip                ...
requests           2.28.1
setuptools         ...
urllib3            ...
Werkzeug           ...

Теперь давайте посмотрим на силу изоляции. Деактивируйте окружение, чтобы вернуться в глобальный контекст вашей системы.

deactivate

Префикс (venv) в вашем приглашении исчезнет. Теперь снова выполните pip list.

pip list

Вы заметите, что flask и requests больше не находятся в списке, потому что они были установлены только внутри виртуального окружения, сохраняя ваше глобальное окружение Python чистым.

Удаление неиспользуемых пакетов

По мере развития проекта некоторые зависимости могут устареть. Хорошей практикой является их удаление, чтобы поддерживать окружение в актуальном состоянии и обновлять файл requirements.txt.

Сначала повторно активируйте виртуальное окружение для управления его пакетами.

source venv/bin/activate

Предположим, нашему проекту больше не нужен пакет requests. Мы можем удалить его с помощью pip. Флаг -y автоматически подтверждает удаление.

pip uninstall -y requests

Проверьте, что пакет был удален, снова выведя список установленных пакетов.

pip list

Вы увидите, что requests и его зависимости (например, urllib3, certifi и т. д., если они больше не нужны другим пакетам) отсутствуют.

После удаления пакета следует обновить файл requirements.txt, чтобы отразить текущее состояние окружения. Это можно сделать, "заморозив" текущий список пакетов в файл.

pip freeze > requirements.txt

Вы можете просмотреть обновленный файл, чтобы подтвердить изменение:

cat requirements.txt

Теперь файл будет содержать только flask и его зависимости.

click==...
Flask==2.2.2
itsdangerous==...
Jinja2==...
MarkupSafe==...
Werkzeug==...

Наконец, давайте пока деактивируем окружение.

deactivate

Удаление всего виртуального окружения

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

Сначала убедитесь, что вы не находитесь внутри каталога my_web_app, так как обычно не рекомендуется удалять каталог, в котором вы находитесь. Давайте перейдем в родительский каталог.

cd /home/labex/project

Перед удалением вы можете проверить, сколько дискового пространства использует виртуальное окружение, с помощью команды du (disk usage).

du -sh my_web_app/venv

Вывод покажет общий размер каталога.

30M     my_web_app/venv

Теперь удалите весь каталог venv. Команда rm -rf рекурсивно и принудительно удаляет каталог и все его содержимое. Будьте осторожны с этой командой.

rm -rf my_web_app/venv

Проверьте, что каталог удален, выведя содержимое my_web_app.

ls my_web_app

Вы увидите, что остался только файл requirements.txt. Виртуальное окружение было полностью очищено.

requirements.txt

Резюме

В этой лабораторной работе вы изучили полный жизненный цикл управления виртуальным окружением Python. Вы практиковались в создании окружения с помощью venv, его активации, установке зависимостей из файла requirements.txt, наблюдении за изоляцией пакетов, удалении ненужных пакетов и, наконец, очистке путем удаления всего каталога окружения. Это важнейшие навыки для любого Python-разработчика для поддержания чистых, воспроизводимых и неконфликтных настроек проектов.