Когда начинаешь второй Python-проект и ставишь pip install requests — эта библиотека устанавливается глобально, для всей системы. Сначала кажется это удобным. Потом возникают проблемы.
Проблема: конфликт версий
Проект A требует requests==2.28
Проект B требует requests==2.31
Оба проекта на одной машине. Установить обе версии глобально нельзя — только одна.
Именно для этого существуют виртуальные окружения (virtual environments, venv).
Что такое venv
Виртуальное окружение — это изолированная папка с:
- Отдельным интерпретатором Python
- Отдельным pip
- Отдельными пакетами
Каждый проект — своё окружение. Пакеты из одного проекта не видят другой.
project-a/
├── .venv/ ← окружение проекта A (requests 2.28)
└── main.py
project-b/
├── .venv/ ← окружение проекта B (requests 2.31)
└── main.py
Создание и активация
Создать
python -m venv .venv
Точка в имени .venv — соглашение. Папку видно в файловом менеджере только если показывать скрытые файлы.
Активировать
# Mac / Linux:
source .venv/bin/activate
# Windows PowerShell:
.venv\Scripts\Activate.ps1
# Windows cmd:
.venv\Scripts\activate.bat
После активации в терминале появится (.venv) в начале строки — это признак что окружение активно.
Проверить
which python # должен показать путь внутри .venv (Mac/Linux)
where python # Windows
Деактивировать
deactivate
Установка пакетов в venv
После активации все команды pip install работают только в этом окружении:
pip install requests python-dotenv
Проверить что установлено:
pip list
requirements.txt — фиксируем версии
Чтобы другой разработчик (или CI/CD) мог воспроизвести то же окружение:
# Записать текущие пакеты с версиями:
pip freeze > requirements.txt
# Установить из файла:
pip install -r requirements.txt
Содержимое requirements.txt:
requests==2.31.0
python-dotenv==1.0.0
certifi==2024.2.2
...
Что добавить в .gitignore
Папку .venv не коммитят — она большая и создаётся из requirements.txt:
.venv/
__pycache__/
*.pyc
Частые ошибки
Установил пакет но программа не находит
Скорее всего venv не активирован. Проверьте (.venv) в терминале.
Ошибка на Windows: «cannot be loaded because running scripts is disabled»
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
VS Code не видит .venv
Ctrl+Shift+P → Python: Select Interpreter → выберите интерпретатор из .venv.
Итог
Одно правило: один проект — одно виртуальное окружение. Это защищает от конфликтов версий и делает проект воспроизводимым на любой машине.
💬 Comments (0)
No comments yet
Be the first to share your opinion about this article!