Введение
Проектам на Python часто требуются разные версии пакетов. Виртуальное окружение предоставляет проекту собственный интерпретатор Python и отдельную директорию для пакетов, поэтому установка пакета для одного проекта не затрагивает глобальное окружение Python или другие проекты.
В этой лабораторной работе вы создадите виртуальное окружение с помощью встроенного модуля venv, активируете его, установите пакет, а затем создадите второе окружение, чтобы убедиться в их полной изоляции. Все действия выполняются в директории /home/labex/project.
Создание виртуального окружения проекта
На этом этапе вы создадите виртуальное окружение для проекта на Python. Виртуальное окружение — это просто директория, содержащая исполняемый файл Python, скрипты активации и собственную область для установки пакетов.
Сначала перейдите в рабочую директорию проекта. Хранение файлов лабораторной работы в /home/labex/project позволяет легко находить окружение и отделять вашу работу от системных файлов.
cd /home/labex/project
Перед созданием окружения проверьте версию Python, доступную в системе. Команда python3 --version выводит версию интерпретатора, которую будет использовать venv.
python3 --version
Вы должны увидеть вывод, похожий на этот:
Python 3...
Теперь создайте виртуальное окружение с именем project-env. Опция -m venv указывает Python запустить встроенный модуль venv как инструмент командной строки, а project-env — это имя директории, в которой будет размещено окружение.
python3 -m venv project-env
Выведите список содержимого новой директории, чтобы увидеть структуру, созданную venv.
ls project-env
Точные названия могут немного отличаться, но вы должны увидеть файлы и папки, подобные этим:
bin
include
lib
pyvenv.cfg
Файл pyvenv.cfg фиксирует параметры создания окружения. Изучите его содержимое.
cat project-env/pyvenv.cfg
Найдите строку include-system-site-packages = false. Эта настройка означает, что данное окружение не будет автоматически использовать глобально установленные пакеты Python.
Активация окружения и установка пакета
На этом этапе вы активируете project-env и установите в него пакет. Активация изменяет переменные окружения оболочки (shell) таким образом, что команды python и pip в первую очередь обращаются к виртуальному окружению.
Убедитесь, что вы находитесь в рабочей директории проекта.
cd /home/labex/project
Используйте source для запуска скрипта активации в текущей оболочке. Это важно, так как дочерний скрипт не может изменить родительскую оболочку, а source обновляет именно ту оболочку, в которой вы работаете.
source project-env/bin/activate
После активации приглашение командной строки обычно начинается с (project-env). Убедитесь, что python теперь указывает на виртуальное окружение, выведя два пути из Python. sys.prefix — это активное окружение, а sys.base_prefix — базовая установка Python.
python -c "import sys; print(sys.prefix); print(sys.base_prefix)"
Первая строка должна указывать на ваше виртуальное окружение, а вторая — на системное расположение Python:
/home/labex/project/project-env
/usr...
Установите небольшой пакет colorama в активное окружение. Запуск python -m pip использует pip, который принадлежит текущему активному интерпретатору Python.
python -m pip install colorama==0.4.6
Когда установка завершится, pip сообщит об успешной установке colorama.
Проверьте наличие пакета из Python, импортировав его и выведя версию.
python -c "import colorama; print(colorama.__version__)"
Вывод должен быть таким:
0.4.6
Вы можете выйти из виртуального окружения с помощью команды deactivate. Это вернет поведение поиска python и pip к обычному состоянию системной оболочки.
deactivate
Создание второго изолированного окружения
На этом этапе вы создадите еще одно виртуальное окружение и сравните его с project-env. Разные окружения могут использовать один и тот же базовый интерпретатор Python, сохраняя при этом свои установленные пакеты отдельно.
Вернитесь в рабочую директорию проекта.
cd /home/labex/project
Найдите системный исполняемый файл python3. Команда command -v выводит путь, который оболочка будет использовать для выполнения команды.
command -v python3
Обычно путь выглядит так:
/usr/bin/python3
Создайте второе окружение с именем tools-env. Опция --prompt tools-env задает текст приглашения при активации, что удобно при работе с несколькими окружениями.
python3 -m venv --prompt tools-env tools-env
Теперь сравните префиксы двух окружений. Каждая команда запускает исполняемый файл Python внутри соответствующего виртуального окружения и выводит его активный префикс.
project-env/bin/python -c "import sys; print(sys.prefix)"
tools-env/bin/python -c "import sys; print(sys.prefix)"
Вы должны увидеть две разные директории:
/home/labex/project/project-env
/home/labex/project/tools-env
Наконец, проверьте, доступен ли colorama в tools-env. Вы установили colorama только в project-env, поэтому второе окружение не должно его найти.
tools-env/bin/python -c "import importlib.util; print(importlib.util.find_spec('colorama'))"
Ожидаемый вывод:
None
Это подтверждает, что пакеты, установленные в одном виртуальном окружении, не появляются автоматически в другом.
Резюме
Вы создали виртуальное окружение Python, изучили его конфигурацию, активировали его, установили пакет и создали второе окружение, чтобы подтвердить изоляцию пакетов. Вы также попрактиковались в использовании python3 -m venv, source, python -m pip и прямых путей к интерпретаторам Python, чтобы понимать, какой именно интерпретатор выполняется в данный момент.



