#Что происходит и как распознать неисправность
Python venv содержит абсолютные пути в скриптах и конфигурации, поэтому копирование .venv вместе с каталогом проекта не гарантирует работоспособность. При запуске встречаются bad interpreter, No such file or directory, пути к старой папке и ошибки активации.
#Как отличить причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
В скриптах остаётся старый путьИсполняемые файлы в .venv/bin или .venv/Scripts ссылаются на прежнее расположение. | Ошибка содержит старый путь. | Создайте новое venv на новом месте. |
| Изменился базовый PythonНа другом ПК/сервере другая версия Python или отсутствует исходный интерпретатор. | pyvenv.cfg содержит старый home, приложение не стартует. | Установите поддерживаемый Python и пересоздайте окружение. |
| Редактор хранит путь старого venvVS Code/PyCharm продолжает выбирать старый интерпретатор. | Прямой вызов нового Python работает, кнопка редактора — нет. | Поменяйте интерпретатор проекта. |
#Пошаговая диагностика и исправление
- Сохраните проект и описание зависимостейПеред действиями сделайте копию исходников, файлов
.envотдельно от общего архива и базы данных, если она внутри папки проекта. Найдитеrequirements.txt,pyproject.tomlлибо файл блокировки зависимостей. Если этих файлов нет, а старое окружение ещё работает, в старом месте сохраните список пакетов командойpython -m pip freeze > requirements-migration.txt; не публикуйте файл, если там приватные адреса репозиториев. - Не пытайтесь лечить старый venv правкой одного путиОткройте перенесённую папку в файловом менеджере. Убедитесь, что исходные
.pyи конфигурация проекта сохранены. Папку.venvпока не удаляйте — переименуйте её, например в.venv-old, чтобы сохранить откат. Если окружение не называется.venv, используйте его реальное имя. - Проверьте установленную версию PythonВ терминале проекта выполните
python3 --versionдля Linux/macOS илиpy --versionдля Windows с официальным Python Launcher. Убедитесь, что версия соответствует проекту и доступна в новом месте. Если команда не найдена, настройте установку Python штатными средствами ОС до пересоздания venv. - Создайте новое виртуальное окружениеОткройте терминал из новой папки проекта: в VS Code «Терминал → Создать терминал», затем
cdв нужный каталог. Выполнитеpython3 -m venv .venvна Linux/macOS илиpy -m venv .venvна Windows. Ожидается папка.venvбез ошибок; права администратора обычно не нужны. Если модуль venv отсутствует в системной установке Linux, попросите администратора установить штатный пакет окружений. - Установите зависимости без активации окруженияНа Linux/macOS выполните
.venv/bin/python -m pip install -r requirements.txt, на Windows —.venv\Scripts\python.exe -m pip install -r requirements.txt, заменив имя requirements на действительный файл. Если используется менеджер Poetry/PDM/uv, следуйте штатной команде конкретного проекта и его файлу блокировки вместо неподходящего requirements. Установка может скачивать пакеты из сети; при ошибке не удаляйте старую среду. - Перевыберите Python в IDE и путях запускаВ VS Code откройте палитру Ctrl+Shift+P →
Python: Select Interpreter, затем выберите новый.venv. Для задания cron, службы systemd и сценариев запуска проверьте абсолютные пути и исправьте их с резервной копией конфигурации. Если используется shebang#!/старый/путь/..., переустановите пакет со скриптами в новом venv вместо ручной правки десятков файлов. - Проверьте исполнение и удаляйте старую среду только позжеЗапустите через новый
.venv/bin/pythonили.venv\Scripts\python.exeосновную программу и тесты проекта. Проверьте импорт ключевых библиотек и значенияsys.executable. После подтверждения работы и отдельной резервной копии можно удалить.venv-old, но не удаляйте её до принятия изменений. При неуспехе вернитесь к прежнему расположению и посмотрите точный текст ошибки установки.
#Команды и примеры для проверки
.venv, предварительно переименуйте его.python3 -m venv .venv.venv/bin/python -m pip --versionКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
py -m venv .venv.venv\Scripts\python.exe -m pip --versionКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
#Как проверить результат и что делать дальше
Правильный результат — новый интерпретатор находится в текущей папке, все нужные пакеты импортируются и редактор/служба/планировщик не используют старые пути. Перенос venv без пересоздания официально не считается надёжным способом миграции.