setup_env_centos8.sh
5.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/usr/bin/env bash
# =============================================================================
# OmniShopAgent - CentOS 8 环境准备脚本
# 准备 Python 3.12、Docker、依赖及虚拟环境
# =============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
VENV_DIR="${VENV_DIR:-$PROJECT_ROOT/venv}"
PYTHON_VERSION="${PYTHON_VERSION:-3.12}"
echo "=========================================="
echo "OmniShopAgent - CentOS 8 环境准备"
echo "=========================================="
echo "项目目录: $PROJECT_ROOT"
echo "虚拟环境: $VENV_DIR"
echo "Python 版本: $PYTHON_VERSION"
echo "=========================================="
# -----------------------------------------------------------------------------
# 1. 安装系统依赖
# -----------------------------------------------------------------------------
echo "[1/4] 安装系统依赖..."
sudo dnf install -y \
gcc \
gcc-c++ \
make \
openssl-devel \
bzip2-devel \
libffi-devel \
sqlite-devel \
xz-devel \
zlib-devel \
readline-devel \
tk-devel \
libuuid-devel \
curl \
wget \
git \
tar
# -----------------------------------------------------------------------------
# 2. 检查 Docker(可选)
# -----------------------------------------------------------------------------
echo "[2/4] 检查 Docker..."
if ! command -v docker &>/dev/null; then
echo " 安装 Docker..."
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 2>/dev/null || {
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
}
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker "$USER" 2>/dev/null || true
echo " Docker 已安装。请执行 'newgrp docker' 或重新登录以使用 docker 命令。"
else
echo " Docker 已安装: $(docker --version)"
fi
# -----------------------------------------------------------------------------
# 3. 安装 Python 3.12
# -----------------------------------------------------------------------------
echo "[3/4] 安装 Python $PYTHON_VERSION..."
USE_CONDA=false
if command -v python3.12 &>/dev/null; then
echo " Python 3.12 已安装"
elif command -v conda &>/dev/null; then
echo " 使用 conda 创建 Python $PYTHON_VERSION 环境..."
conda create -n shop_agent "python=$PYTHON_VERSION" -y
USE_CONDA=true
echo " Conda 环境已创建。请执行: conda activate shop_agent"
echo " 然后手动执行: pip install -r $PROJECT_ROOT/requirements.txt"
echo " 跳过 venv 创建..."
else
echo " 从源码编译 Python $PYTHON_VERSION..."
sudo dnf groupinstall -y 'Development Tools'
cd /tmp
PY_URL="https://www.python.org/ftp/python/${PYTHON_VERSION}/Python-${PYTHON_VERSION}.0.tgz"
PY_TGZ="Python-${PYTHON_VERSION}.0.tgz"
[ -f "$PY_TGZ" ] || wget -q "$PY_URL" -O "$PY_TGZ"
tar xzf "$PY_TGZ"
cd "Python-${PYTHON_VERSION}.0"
./configure --enable-optimizations --prefix=/usr/local
make -j "$(nproc)"
sudo make altinstall
cd /tmp
rm -rf "Python-${PYTHON_VERSION}.0" "$PY_TGZ"
fi
# -----------------------------------------------------------------------------
# 4. 创建虚拟环境并安装依赖(非 conda 时)
# -----------------------------------------------------------------------------
if [ "$USE_CONDA" = true ]; then
echo "[4/4] 已使用 conda,跳过 venv 创建"
else
echo "[4/4] 创建虚拟环境与安装 Python 依赖..."
PYTHON_BIN=""
for p in python3.12 python3.11 python3; do
if command -v "$p" &>/dev/null; then
VER=$("$p" -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")' 2>/dev/null || echo "0")
if [[ "$VER" == "3.1"* ]] || [[ "$VER" == "3.12"* ]]; then
PYTHON_BIN="$p"
break
fi
fi
done
if [ -z "$PYTHON_BIN" ]; then
echo " 错误: 未找到 Python 3.10+。若使用 conda,请先执行: conda activate shop_agent"
echo " 然后手动执行: pip install -r $PROJECT_ROOT/requirements.txt"
exit 1
fi
if [ ! -d "$VENV_DIR" ]; then
echo " 创建虚拟环境: $VENV_DIR"
"$PYTHON_BIN" -m venv "$VENV_DIR"
fi
echo " 激活虚拟环境并安装依赖..."
set +u
source "$VENV_DIR/bin/activate"
set -u
pip install -U pip
pip install -r "$PROJECT_ROOT/requirements.txt"
echo " Python 依赖安装完成。"
fi
# 配置 .env
if [ ! -f "$PROJECT_ROOT/.env" ]; then
echo ""
echo " 创建 .env 配置文件..."
cp "$PROJECT_ROOT/.env.example" "$PROJECT_ROOT/.env"
echo " 请编辑 $PROJECT_ROOT/.env 配置 OPENAI_API_KEY 等参数。"
fi
echo ""
echo "=========================================="
echo "环境准备完成!"
echo "=========================================="
echo "下一步:"
echo " 1. 编辑 .env 配置 OPENAI_API_KEY、SEARCH_API_BASE_URL 等"
echo " 2. (可选)下载数据: python scripts/download_dataset.py"
echo " 3. 启动应用: ./scripts/start.sh"
echo ""
echo "激活虚拟环境: source $VENV_DIR/bin/activate"
echo "=========================================="