fix: venv без pip — авто-пересоздание, проверка ensurepip, валидация после pip install

Made-with: Cursor
This commit is contained in:
anten-ka
2026-03-06 19:36:13 +03:00
parent 0274f42600
commit 45d9287780

View File

@@ -930,12 +930,28 @@ install_bot_deps() {
local bot_steps=3 bot_cur=0
bot_cur=$((bot_cur+1)); progress_bar $bot_cur $bot_steps "Создание venv..."
# Если venv сломан (нет pip), удаляем и пересоздаём
if [ -d "$BOT_DIR/venv" ] && [ ! -f "$BOT_DIR/venv/bin/pip" ]; then
echo -e " ${YELLOW}!${NC} venv повреждён (нет pip), пересоздаю..."
rm -rf "$BOT_DIR/venv"
fi
if [ ! -d "$BOT_DIR/venv" ]; then
# Убеждаемся что ensurepip доступен
if ! python3 -m ensurepip --version &>/dev/null; then
local PY_VER
PY_VER=$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" 2>/dev/null || echo "3")
echo -e " ${YELLOW}!${NC} Установка python${PY_VER}-venv (с ensurepip)..."
install_pkg "python${PY_VER}-venv" 2>/dev/null
install_pkg python3-venv python3-pip 2>/dev/null
fi
spinner_start "Создание Python venv..."
python3 -m venv "$BOT_DIR/venv" 2>/dev/null
spinner_stop
if [ ! -d "$BOT_DIR/venv" ]; then
echo -e " ${RED}${NC} Ошибка создания venv."
if [ ! -f "$BOT_DIR/venv/bin/pip" ]; then
echo -e " ${RED}${NC} venv создан, но pip отсутствует."
echo -e " ${YELLOW}Выполните вручную: apt install python3-venv && rm -rf $BOT_DIR/venv${NC}"
return 1
fi
fi
@@ -956,6 +972,11 @@ install_bot_deps() {
echo -e " ${RED}${NC} pip install не удался."
return 1
fi
# Проверяем что модуль реально доступен
if ! "$BOT_DIR/venv/bin/python" -c "import telegram" 2>/dev/null; then
echo -e " ${RED}${NC} Модуль telegram не найден после установки."
return 1
fi
echo -e " ${GREEN}${NC} Зависимости установлены"
}