Как правило, на компьютере программиста живёт сразу несколько проектов. Эти проекты могли быть написаны в разное время и разными разработчиками. Старым проектам нужны старые версии библиотек, новым — новые; библиотеки время от времени обновляются, и часть кода оказывается несовместима с новыми библиотеками. Как сделать, чтобы этот зоопарк мирно уживался?Для решения этой проблемы были придуманы «виртуальные окружения». Это своего рода «изолированные территории», отдельные виртуальные загончики для проектов. В каждом загончике живёт один проект, и для него можно установить собственные настройки: указать нужную версию Python, установить необходимые библиотеки. Теперь можно одновременно работать со множеством проектов, не переживая, что их зависимости будут мешать друг другу.
Создание виртуального окружения
Установка и настройка виртуального окружения для каждого проекта — это норма жизни и современный стандарт, без этого разработчик — не разработчик.В уроке «Клонирование репозитория, отображение, добавление файлов» вы создали директорию Dev/backend_test_homework
. Для тренировки установите виртуальное окружение для проекта в этой папке. Запустите редактор Visual Studio Code и через меню «Файл» / «Открыть директорию» откройте папку Dev/backend_test_homework
. Запустите терминал в VSCode, удостоверьтесь, что вы работаете из директории backend_test_homework
(если вы работаете под Windows — убедитесь, что в терминале запущен Git Bash), — и выполните команду развёртывания виртуального окружения:
...Dev/backend_test_homework$ python3 -m venv venv
# Python, запусти модуль venv, он установит виртуальное окружение.
# Назови это виртуальное окружение "venv", чтобы его можно было вызвать по имени.
# Имя можно задать любое, мы в примерах будем использовать "venv".
После выполнения этой команды в директории проекта появится папка venv
(от virtual environment, «виртуальное окружение»), в которой хранятся служебные файлы виртуального окружения. В этой же директории будут сохраняться все зависимости проекта. После создания виртуального окружения должна получиться такая структура:
Dev
└── backend_test_homework
├── .git/ <-- папка, необходимая для работы git (скрытая, может быть не видна)
├── .gitignore <-- файл со списком файлов и папок, которые git не должен отслеживать
├── .vscode/ <-- папка с настройками vscode (опционально)
├── README.md <-- файл с описанием проекта
├── program.py <-- файл с вашей программой
├── pytest.ini <-- файл с настройкой тестов
├── test_program.py <-- файл с тестами
└── venv/ <-- папка виртуального окружения
Запуск виртуального окружения проекта
Каждый раз перед началом работы с проектом нужно запускать виртуальное окружение. При активированном окружении проект будет работать внутри собственного «загончика», где ему будет доступны его зависимости и собственная версия Python. Откройте терминал, убедитесь, что вы находитесь в корневой директории проекта, и активируйте виртуальное окружение. В Windows:
# выполнить инструкции из файла activate во вложенной папке venv/Scripts
...Dev/backend_test_homework$ source venv/Scripts/activate
В macOS или Linux:
# выполнить инструкции из файла activate во вложенной папке venv/bin
...Dev/backend_test_homework$ source venv/bin/activate
При работе с проектом эти команды будут вам нужны постоянно. Запишите их в блокнотик, на стикер или просто запомните. В терминале появится уведомление о том, что вы работаете в виртуальном окружении: строка (venv)
будет предварять все команды.
# Строка для ввода теперь будет выглядеть так:
(venv) ...$
# В зависимости от настроек вашей системы,
# строка ввода может выглядеть чуть иначе.
# Например, так:
(venv) username@computer-name /directory-name$
# username - имя пользователя
# computer-name - название компьютера
# /directory-name - текущая директория
В дальнейшем курсе все команды, которые начинаются с (venv)...$
, выполняйте с активированным виртуальным окружением. Магия виртуального окружения работает таким образом, что после его активации все вводимые команды будут связаны с выбранным окружением. Остановить работу виртуального окружения можно командой.
(venv)...$ deactivate
При необходимости можно уничтожить виртуальное окружение, просто удалив папку /venv.
Для активации виртуального окружения в PowerShell Windows не нужна приставка source, свойственная для Linux, как указано в тексте. Вместо этого нужно просто написать директорию, предварительно перед этим изменив политику выполнения скриптов в PowerShell (Set-ExecutionPolicy Unrestricted)