#Что происходит и когда возникает ошибка
После удаления или перемещения виртуального окружения команда pip может сообщать bad interpreter, No such file or directory либо указывать на старый путь. Скрипты запуска внутри venv обычно не предназначены для переноса между каталогами.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Устаревший исполняемый файл pipОбёртка pip была создана с абсолютным путём к Python. | Строка shebang указывает на прежнюю .venv | Пересоздать окружение в текущем каталоге. |
| PATH всё ещё содержит старую папкуОболочка выбирает старую запись перед новой. | where/command -v pip показывает удалённый каталог | Закрыть терминал, изменить локальный PATH, запустить .venv Python. |
| Редактор сохранил удалённый интерпретаторВ конфигурации проекта остался старый адрес. | IDE пишет Python executable not found | Выбрать исполняемый Python новой среды. |
#Подробная диагностика и исправление
- Зафиксируйте ошибку и сохраните зависимостиЕсли старое окружение ещё существует, сначала экспортируйте
python -m pip freezeиз него. Если уже удалено, найдите исходныйrequirements.txt,pyproject.tomlили другой официальный список зависимостей проекта; не восстанавливайте весь глобальный Python по памяти.
- Проверьте исполняемые файлы в текущей оболочкеВ Linux/macOS запустите
command -v pipиcommand -v python; в Windows PowerShell —Get-Command pip -All. Если путь ведёт в удалённую.venv-old, больше не используйте этот исполняемый файл. Новый терминал сбрасывает временную активацию.Linux · Терминал (Bash)КомандаLinux/macOS; в Windows PowerShell: Get-Command python -All; Get-Command pip -All.command -v pythoncommand -v pip
- Создайте новое окружение, не перетирая исходникиВ корне проекта проверьте Python базовой версии, затем создайте
.venv-new. Наличиеpyvenv.cfg,bin/pythonилиScripts/python.exeподтверждает создание; простое копирование старой.venvне рекомендуется.Linux · Терминал (Bash)КомандаВыполняйте из корня проекта обычным пользователем.python -m venv .venv-new
- Установите зависимости зановоИспользуйте Python именно нового окружения. В Linux/macOS запустите команду ниже, в Windows замените начало на
.\.venv-new\Scripts\python.exe. Если нет исходного списка зависимостей, вернитесь к документации приложения и устанавливайте только требуемое. - Дополнительная команда по темеLinux · Терминал (Bash)С осторожностьюТолько если requirements.txt существует; установка меняет лишь .venv-new, нужен доступ к доверенному источнику.
./.venv-new/bin/python -m pip install -r requirements.txtКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
- Обновите путь в запуске и редактореВ IDE откройте выбор интерпретатора проекта и укажите Python из
.venv-new. Для системного задания/службы исправьте путь в её конфигурации после согласования с владельцем; не заменяйте путь к общесистемному Python.
- Проверяйте команду через -m, а не старую обёрткуВыполните
python -m pip --versionименно новым Python, а затемpip check. При успехе новая среда уже может выполнять программы; если проблема осталась, ищите старые пути в скриптах запуска и настройках оболочки. - Linux/macOSLinux · Терминал (Bash)КомандаLinux/macOS. Windows: используйте
.\.venv-new\Scripts\python.exeвместо ./ .venv-new/bin/python../.venv-new/bin/python -m pip --version./.venv-new/bin/python -m pip check
- Удалите остатки только после испытанийЗапустите приложение и убедитесь, что версия и зависимости правильные. Только после этого можно вручную удалить старую, точно идентифицированную папку окружения — не удаляйте родительский каталог проекта и не выполняйте автоматические рекурсивные удаления по шаблонам.
#Проверка результата и действия при неуспехе
python -m pip --version показывает новую папку .venv-new, а запуск программы не ссылается на старый каталог.
Если исправление не помогло, вернитесь к точному сообщению об ошибке, сохраните версию Python, адрес целевого окружения и очищенный от секретов журнал; выясните, на каком шаге результат отличается от ожидаемого. Не изменяйте глобальный Python ради устранения сбоя проекта.