#Что происходит и когда возникает ошибка
Пакет ставится в глобальный Python, хотя ожидалось виртуальное окружение. Такой сбой возникает, когда активировано не то окружение, терминал создан заново или команда pip принадлежит глобальной установке.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Виртуальная среда не активнаТекущий Python не из venv. | sys.prefix == sys.base_prefix | Активировать нужную среду либо указать путь. |
| Вызывается глобальный pippip из PATH не совпадает с активным Python. | pip --version указывает на каталог вне .venv | Вызывать python -m pip из среды. |
| Запуск в редакторе отличается от терминалаРедактор выбирает собственный интерпретатор. | Из IDE модуля нет, в терминале есть | Поменять настройку запуска проекта. |
#Подробная диагностика и исправление
- Сначала выясните, куда уже попал пакетНе удаляйте пакет из системы: он может быть нужен другим программам. Запишите результат
pip showи полный путь к исполняемому Python. Если Location ведёт в системный site-packages, установка действительно была глобальной. - Команды только чтения, выполняются в том же терминале, где шла установкаLinux · Терминал (Bash)КомандаКоманды только чтения, выполняются в том же терминале, где шла установка.
python -m pip show ИМЯ_ПАКЕТАpython -c "import sys; print(sys.executable, sys.prefix, sys.base_prefix)"
- Найдите ожидаемую .venvВ файловом менеджере проекта проверьте наличие
.venvи файлаpyvenv.cfgвнутри неё. Папка может называться по-другому; если её нет, создайте окружение в каталоге проекта черезpython -m venv .venvпосле выбора правильной базовой версии Python.
- Установите через явный путь к Python окруженияВ Linux/macOS выполните команду из корня проекта. В Windows используйте
.\.venv\Scripts\python.exe -m pip install ИМЯ_ПАКЕТА. Не добавляйте--user: пользовательские установки не заменяют изолированное окружение. - Linux/macOS; обычные права; пакет может обновить зависимости только внутри .venvLinux · Терминал (Bash)С осторожностьюLinux/macOS; обычные права; пакет может обновить зависимости только внутри .venv.
./.venv/bin/python -m pip install ИМЯ_ПАКЕТАКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Подтвердите расположение и версиюВ Linux/macOS проверьте
./.venv/bin/python -m pip show ...; уLocation:должен быть путь внутри .venv. Если пакета нет, проверьте ошибку установки. На Windows используйте.venv\Scripts\python.exe. - Установка и проверка запускаются одним исполняемым файломLinux · Терминал (Bash)КомандаУстановка и проверка запускаются одним исполняемым файлом.
./.venv/bin/python -m pip show ИМЯ_ПАКЕТА
- Исправьте рабочие командыВ скриптах запуска, контейнере, IDE и задачах используйте путь к Python окружения. Если нужна активация, выполните её в каждом новом окне терминала. Кнопка запуска редактора может не наследовать активированную консоль.
- Если системный пакет уже установлен, оцените зависимых пользователейУдаление системной копии может поломать утилиты, поэтому не выполняйте
sudo pip uninstall. Если глобальная установка всё же была ошибкой, составьте перечень зависимых программ и согласуйте очистку с администратором; для решения основной задачи достаточно правильно установленной .venv.
#Проверка результата и действия при неуспехе
Команда pip show через Python окружения показывает .venv, а приложение под тем же Python импортирует пакет.
Если исправление не помогло, вернитесь к точному сообщению об ошибке, сохраните версию Python, адрес целевого окружения и очищенный от секретов журнал; выясните, на каком шаге результат отличается от ожидаемого. Не изменяйте глобальный Python ради устранения сбоя проекта.