fix(setup_server): обработка отказа venv/ensurepip на Linux (fallback через get-pip) + python из venv для проверок
This commit is contained in:
+57
-17
@@ -20,6 +20,51 @@ esac
|
||||
ARCH="$(uname -m)"
|
||||
echo "📍 Платформа: $PLATFORM ($ARCH)"
|
||||
|
||||
# --- Выбор интерпретатора Python для создания venv ---
|
||||
# Предпочитаем python3.13, при отсутствии — любой python3.
|
||||
if command -v python3.13 &> /dev/null; then
|
||||
PYBIN="python3.13"
|
||||
elif command -v python3 &> /dev/null; then
|
||||
PYBIN="python3"
|
||||
else
|
||||
echo "❌ python3 не найден в PATH"
|
||||
exit 1
|
||||
fi
|
||||
echo "🐍 Интерпретатор: $PYBIN ($($PYBIN --version 2>&1))"
|
||||
|
||||
# --- Создание venv (с обработкой отсутствия ensurepip/venv-пакета) ---
|
||||
create_venv() {
|
||||
if [ -d ".venv" ]; then
|
||||
echo " .venv уже существует — пропускаю создание"
|
||||
return 0
|
||||
fi
|
||||
if "$PYBIN" -m venv .venv; then
|
||||
return 0
|
||||
fi
|
||||
echo "⚠️ '$PYBIN -m venv .venv' не удался (частая причина — не установлен"
|
||||
echo " пакет python3-venv / ensurepip в дистрибутиве)."
|
||||
if [ "$PLATFORM" = "linux" ]; then
|
||||
echo " Debian/Ubuntu: sudo apt-get install -y python3.13-venv python3.13-dev"
|
||||
echo " (или python3-venv, если версия другая)"
|
||||
echo " Fedora/RHEL: sudo dnf install -y python3-devel"
|
||||
fi
|
||||
echo " Пробую fallback: venv без pip + bootstrap через get-pip.py..."
|
||||
if ! "$PYBIN" -m venv --without-pip .venv; then
|
||||
echo "❌ Не удалось создать venv даже без pip. Установите python3-venv и повторите."
|
||||
return 1
|
||||
fi
|
||||
if ! curl -fsSL https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py; then
|
||||
echo "❌ Не удалось скачать get-pip.py (нет сети?). Установите pip вручную."
|
||||
return 1
|
||||
fi
|
||||
if ! .venv/bin/python /tmp/get-pip.py; then
|
||||
echo "❌ bootstrap pip через get-pip.py не удался."
|
||||
return 1
|
||||
fi
|
||||
rm -f /tmp/get-pip.py
|
||||
return 0
|
||||
}
|
||||
|
||||
# ============================================
|
||||
# macOS — установка без CUDA (есть MPS на Apple Silicon)
|
||||
# ============================================
|
||||
@@ -37,19 +82,17 @@ if [ "$PLATFORM" = "macos" ]; then
|
||||
fi
|
||||
echo " Homebrew: $(brew --version | head -1)"
|
||||
|
||||
# --- Python через brew (если нет) ---
|
||||
if ! command -v python@3.13 &> /dev/null; then
|
||||
# --- Python через brew (если нет python3.13) ---
|
||||
if ! command -v python3.13 &> /dev/null; then
|
||||
echo "📥 Устанавливаю python@3.13 через brew..."
|
||||
brew install python@3.13
|
||||
# brew ставит команду python3.13
|
||||
fi
|
||||
echo "🐍 Python: $(python3.13 --version)"
|
||||
|
||||
# --- Создание venv ---
|
||||
echo ""
|
||||
echo "📦 Создание виртуального окружения venv..."
|
||||
if [ ! -d ".venv" ]; then
|
||||
python3.13 -m venv .venv
|
||||
fi
|
||||
create_venv || exit 1
|
||||
source .venv/bin/activate
|
||||
echo " Активировано: $(which python)"
|
||||
|
||||
@@ -71,7 +114,7 @@ if [ "$PLATFORM" = "macos" ]; then
|
||||
# --- Проверка PyTorch + устройства ---
|
||||
echo ""
|
||||
echo "✅ Проверка PyTorch..."
|
||||
python@3.13 -c "
|
||||
python -c "
|
||||
import torch, platform
|
||||
print(f'PyTorch: {torch.__version__}')
|
||||
print(f'MPS available: {torch.backends.mps.is_available()}')
|
||||
@@ -96,17 +139,14 @@ else
|
||||
echo "⚠️ nvidia-smi не найден — CUDA может быть не установлена"
|
||||
fi
|
||||
|
||||
# --- Проверка Python ---
|
||||
echo ""
|
||||
echo "🐍 Проверка Python..."
|
||||
python3.13 --version
|
||||
|
||||
# --- Создание venv ---
|
||||
echo ""
|
||||
echo "🐍 Проверка Python..."
|
||||
"$PYBIN" --version
|
||||
|
||||
echo ""
|
||||
echo "📦 Создание виртуального окружения venv..."
|
||||
if [ ! -d ".venv" ]; then
|
||||
python3.13 -m venv .venv
|
||||
fi
|
||||
create_venv || exit 1
|
||||
source .venv/bin/activate
|
||||
echo " Активировано: $(which python)"
|
||||
|
||||
@@ -128,7 +168,7 @@ else
|
||||
# --- Проверка PyTorch + CUDA ---
|
||||
echo ""
|
||||
echo "✅ Проверка PyTorch + CUDA..."
|
||||
python3.13 -c "
|
||||
python -c "
|
||||
import torch
|
||||
print(f'PyTorch: {torch.__version__}')
|
||||
print(f'CUDA available: {torch.cuda.is_available()}')
|
||||
@@ -143,7 +183,7 @@ fi
|
||||
# ============================================
|
||||
echo ""
|
||||
echo "✅ Проверка MLflow..."
|
||||
python3.13 -c "import mlflow; print(f'MLflow: {mlflow.__version__}')"
|
||||
python -c "import mlflow; print(f'MLflow: {mlflow.__version__}')"
|
||||
|
||||
echo ""
|
||||
echo "============================================"
|
||||
|
||||
Reference in New Issue
Block a user