Venv в Python: как создать окружение и не перепутать pip

Venv в Python: как создать окружение и не перепутать pip
Содержание статьи

Чтобы пакеты одного Python-проекта не мешали другому, создайте отдельное виртуальное окружение: python -m venv .venv. Затем запускайте код и pip именно через его интерпретатор. Активация удобна, но не обязательна: явный путь к Python помогает избежать ситуации, когда пакет установлен, а программа его не видит.

В разборе Mentoring.digital соберём минимальное окружение и проверим его до установки зависимостей. Команды выполняйте в папке учебного проекта, где ещё нет каталога .venv.

Создайте окружение и проверьте путь к Python

Для PowerShell в Windows:

python -m venv .venv
.\.venv\Scripts\python.exe -c "import sys; print(sys.executable)"
.\.venv\Scripts\python.exe -m pip --version

Для Linux и macOS:

python3 -m venv .venv
.venv/bin/python -c "import sys; print(sys.executable)"
.venv/bin/python -m pip --version

Команда создания использует тот Python, которым она запущена. Если на компьютере несколько версий, сначала проверьте python --version или python3 --version. Для проекта с требованием конкретной версии выбирайте её явно, а не рассчитывайте на первое совпадение в PATH.

Путь из sys.executable должен вести внутрь нового окружения. В выводе pip также проверьте расположение пакета и версию Python. Само появление папки .venv не доказывает, что редактор начал её использовать.

Активация меняет удобство запуска, а не правила установки

В PowerShell активация выглядит как .\.venv\Scripts\Activate.ps1, а в bash или zsh как source .venv/bin/activate. После неё можно писать python -m pip без длинного пути. Команда deactivate возвращает прежнее окружение оболочки.

Если PowerShell запрещает запуск скрипта активации, для работы с проектом не требуется менять системную политику. Используйте прямой путь к python.exe, как в первом блоке. Виртуальное окружение при этом работает.

Например, пакет requests устанавливают командой .\.venv\Scripts\python.exe -m pip install requests в Windows или .venv/bin/python -m pip install requests в Linux и macOS. Выполняйте её только если requests действительно нужен проекту. Для существующего проекта сначала прочитайте его инструкцию и файл зависимостей.

Что проверить при ModuleNotFoundError

  1. Выведите sys.executable в том процессе, где возникает ошибка: терминал и запуск из IDE могут использовать разные интерпретаторы.
  2. Тем же интерпретатором выполните -m pip show requests, заменив requests на имя устанавливаемого пакета.
  3. Сверьте имя пакета для установки и имя модуля для import. Они не обязаны совпадать.
  4. В настройках проекта IDE выберите Python из .venv. После выбора заново запустите процесс приложения.

Не устанавливайте случайные пакеты по названию из ошибки. Ошибка может относиться к собственному модулю проекта или необязательной зависимости. Сначала прочитайте traceback и документацию используемой библиотеки. Случайная смена pip не исправляет неверную структуру импортов.

Как переносить проект и закрепить результат

Храните исходный код вне .venv. Окружение не стоит копировать на другой компьютер или включать в Git: его пересоздают по описанию зависимостей. Команда python -m pip freeze показывает установленные пакеты, но сама по себе не объясняет, какие из них проекту действительно нужны.

Контрольная задача: откройте второй терминал без активации и запустите программу прямым путём к Python из .venv. Сверьте путь интерпретатора в обоих запусках. Если одинаковый код работает по-разному, сравните зависимости, рабочий каталог и переменные окружения, а не только название папки.

На курсе Python с личным планом настройку окружения можно связать с первым рабочим скриптом. Если уже есть ошибка импорта, наставнику по Python полезно показать traceback, команду запуска и путь интерпретатора. Само venv изолирует зависимости, но не служит защитной песочницей для непроверенного кода.

Похожие статьи по данной теме