Зачем это нужно
Представьте: делаете два проекта. Первому нужна библиотека версии 1, второму — версии 3, и они несовместимы. Если ставить всё в систему, работать будет только один проект.
Виртуальное окружение — отдельная папка с собственным набором библиотек для конкретного проекта. Каждый проект живёт в своей коробке и не мешает соседям.
Второе применение важнее: без окружения вы не сможете внятно сказать, что нужно вашему проекту для запуска. А значит, ни развернуть его, ни отдать другому человеку.
Как создать и включить
В папке проекта:
python -m venv .venv
Появится папка с отдельным интерпретатором и библиотеками.
Включить в Linux и macOS:
source .venv/bin/activate
Включить в Windows:
.venv\Scripts\activate
После включения в начале строки терминала появляется название окружения — признак, что вы внутри.
Выключить:
deactivate
Как ставить библиотеки
Внутри включённого окружения:
pip install requests
Ставится только в этот проект, система не затрагивается.
Как зафиксировать зависимости
Чтобы другой человек мог запустить ваш проект:
pip freeze > requirements.txt
Файл со списком библиотек и версий кладётся в репозиторий.
Установка из него на другой машине:
pip install -r requirements.txt
Без этого файла ваш проект нельзя запустить, и это первое, на что смотрят, открывая чужой репозиторий.
Что не класть в репозиторий
Саму папку окружения. Она весит десятки мегабайт, зависит от системы и никому не нужна: у другого человека она создастся своя.
Добавьте её в список игнорируемых файлов. Папка окружения в репозитории — верный признак новичка.
Типичные ошибки
Забыли включить окружение. Ставите библиотеку, а она уходит в систему. Признак: в начале строки терминала нет названия окружения.
Разные окружения в редакторе и терминале. Редактор запускает не тот интерпретатор, и в нём «библиотека не найдена». Проверьте, какой интерпретатор выбран в настройках проекта.
Забыли обновить список зависимостей. Поставили библиотеку, а в файл не записали. У другого человека проект не запустится.
Окружение попало в репозиторий. Уберите и добавьте в игнорируемые.
Есть ли что-то удобнее
Да, существуют инструменты, которые управляют и окружением, и зависимостями сразу, и работают быстрее. Но начинать стоит со встроенного способа: он есть везде, не требует установки и понимание его устройства пригодится в любом случае.
Хватит читать — пора делать
На CohortX можно найти команду под пет-проект и получить тот самый опыт, о котором спрашивают на собеседовании.
Похожие статьи
- FastAPI: your first service in an eveningWhat a service for programs is, how to write your first one in an evening, and why automatic documentation saves time.
- FastAPI: первый сервис за вечерЧто такое сервис для программ, как написать первый за вечер и почему автоматическая документация экономит время.
- Django for beginners: a first project step by stepFrom installation to a working list with an admin panel — the steps, and what each one means.