Обновился минорный Python — и окружение отвалилось с невнятной ошибкой про
отсутствующий модуль. Причина в том, что venv хранит внутри себя
ссылку на конкретный интерпретатор и путь к его стандартной библиотеке. Меняется
интерпретатор — ссылка повисает.
Что помогает
Не чинить окружение, а пересоздавать его. Это дёшево, если состав пакетов записан в файл, а не живёт только в голове:
python -m venv --clear .venv
.venv/bin/pip install -r requirements.txt
Флаг --clear вычищает старое содержимое вместо того, чтобы
дописывать поверх. Без него остаются артефакты от прежней версии, и диагноз
становится ещё запутаннее.
Что не помогает
Правка путей внутри pyvenv.cfg руками. Иногда срабатывает,
но оставляет окружение в состоянии, которое невозможно воспроизвести на другой
машине. А воспроизводимость — единственное, ради чего venv вообще заводят.
Ещё одно: окружение не место для хранения. Каталог.venvне должен попадать ни в архив, ни в репозиторий — он собирается изrequirements.txtза полминуты.