1
This commit is contained in:
@@ -200,6 +200,22 @@ if [ ! -d "venv" ]; then
|
||||
echo "✅ 虚拟环境创建成功"
|
||||
else
|
||||
echo "✅ 虚拟环境已存在"
|
||||
# 检查虚拟环境是否正常
|
||||
if [ -f "venv/bin/pip" ]; then
|
||||
# 检查 pip 脚本是否有行尾符问题
|
||||
if file venv/bin/pip | grep -q "CRLF"; then
|
||||
echo "⚠️ 检测到虚拟环境中的脚本有行尾符问题,正在修复..."
|
||||
find venv/bin -type f -name "pip*" -exec sed -i 's/\r$//' {} \;
|
||||
find venv/bin -type f -name "activate" -exec sed -i 's/\r$//' {} \;
|
||||
find venv/bin -type f -name "python*" -exec sed -i 's/\r$//' {} \;
|
||||
echo "✅ 行尾符已修复"
|
||||
fi
|
||||
else
|
||||
echo "⚠️ 虚拟环境可能已损坏,正在重新创建..."
|
||||
rm -rf venv
|
||||
python3 -m venv venv
|
||||
echo "✅ 虚拟环境重新创建成功"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 4. 激活虚拟环境并安装 Python 包
|
||||
@@ -207,16 +223,25 @@ echo ""
|
||||
echo "步骤 4: 安装 Python 依赖包..."
|
||||
source venv/bin/activate
|
||||
|
||||
# 验证 pip 是否可用
|
||||
if ! command -v pip >/dev/null 2>&1; then
|
||||
echo "❌ 错误: pip 命令不可用,尝试修复虚拟环境..."
|
||||
deactivate 2>/dev/null || true
|
||||
rm -rf venv
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
fi
|
||||
|
||||
# 升级 pip
|
||||
pip install --upgrade pip
|
||||
python3 -m pip install --upgrade pip
|
||||
|
||||
# 安装依赖
|
||||
pip install DrissionPage
|
||||
python3 -m pip install DrissionPage
|
||||
|
||||
# 可选:如果需要数据库功能
|
||||
read -p "是否需要数据库功能?(sqlalchemy, pymysql) [y/N]: " need_db
|
||||
if [ "$need_db" = "y" ] || [ "$need_db" = "Y" ]; then
|
||||
pip install sqlalchemy pymysql
|
||||
python3 -m pip install sqlalchemy pymysql
|
||||
fi
|
||||
|
||||
deactivate
|
||||
|
||||
227
setup_ubuntu.sh
Normal file
227
setup_ubuntu.sh
Normal file
@@ -0,0 +1,227 @@
|
||||
#!/bin/bash
|
||||
# Ubuntu 环境快速设置脚本
|
||||
|
||||
set -e # 遇到错误立即退出
|
||||
|
||||
# 确保使用 bash 运行(兼容性问题处理)
|
||||
if [ -z "$BASH_VERSION" ]; then
|
||||
echo "警告: 此脚本需要使用 bash 运行"
|
||||
echo "请使用: bash $0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "=========================================="
|
||||
echo "京东物流提取工具 - Ubuntu 环境设置"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# 1. 检查并安装系统依赖
|
||||
echo "步骤 1: 检查系统依赖..."
|
||||
if ! command -v python3 >/dev/null 2>&1; then
|
||||
echo "安装 Python3..."
|
||||
sudo apt update
|
||||
sudo apt install -y python3 python3-pip python3-venv
|
||||
else
|
||||
echo "✅ Python3 已安装"
|
||||
fi
|
||||
|
||||
# 检查 Chrome/Chromium
|
||||
CHROME_PATH=""
|
||||
if command -v google-chrome >/dev/null 2>&1; then
|
||||
CHROME_PATH=$(which google-chrome)
|
||||
echo "✅ 找到 Google Chrome: $CHROME_PATH"
|
||||
elif [ -f "/usr/bin/google-chrome" ]; then
|
||||
CHROME_PATH="/usr/bin/google-chrome"
|
||||
echo "✅ 找到 Google Chrome: $CHROME_PATH"
|
||||
elif command -v chromium-browser >/dev/null 2>&1; then
|
||||
CHROME_PATH=$(which chromium-browser)
|
||||
echo "✅ 找到 Chromium: $CHROME_PATH"
|
||||
elif [ -f "/usr/bin/chromium-browser" ]; then
|
||||
CHROME_PATH="/usr/bin/chromium-browser"
|
||||
echo "✅ 找到 Chromium: $CHROME_PATH"
|
||||
else
|
||||
echo "⚠️ 未找到 Chrome/Chromium,将尝试安装..."
|
||||
echo "选择要安装的浏览器:"
|
||||
echo "1) Google Chrome (推荐)"
|
||||
echo "2) Chromium (开源版本)"
|
||||
read -p "请选择 [1-2]: " choice
|
||||
|
||||
if [ "$choice" = "1" ]; then
|
||||
echo "正在安装 Google Chrome..."
|
||||
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
||||
sudo apt install -y ./google-chrome-stable_current_amd64.deb
|
||||
rm -f google-chrome-stable_current_amd64.deb
|
||||
CHROME_PATH="/usr/bin/google-chrome"
|
||||
elif [ "$choice" = "2" ]; then
|
||||
echo "正在安装 Chromium..."
|
||||
sudo apt update
|
||||
sudo apt install -y chromium-browser
|
||||
CHROME_PATH="/usr/bin/chromium-browser"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 2. 安装 Chrome 运行时依赖
|
||||
echo ""
|
||||
echo "步骤 2: 检查 Chrome 运行时依赖..."
|
||||
DEPS="libnss3 libatk-bridge2.0-0 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libasound2"
|
||||
MISSING_DEPS=""
|
||||
|
||||
for dep in $DEPS; do
|
||||
if ! dpkg -l 2>/dev/null | grep -q "^ii.*$dep"; then
|
||||
if [ -z "$MISSING_DEPS" ]; then
|
||||
MISSING_DEPS="$dep"
|
||||
else
|
||||
MISSING_DEPS="$MISSING_DEPS $dep"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -n "$MISSING_DEPS" ]; then
|
||||
echo "安装缺失的依赖: $MISSING_DEPS"
|
||||
sudo apt install -y $MISSING_DEPS
|
||||
else
|
||||
echo "✅ 所有依赖已安装"
|
||||
fi
|
||||
|
||||
# 3. 创建虚拟环境
|
||||
echo ""
|
||||
echo "步骤 3: 设置 Python 虚拟环境..."
|
||||
if [ ! -d "venv" ]; then
|
||||
echo "创建虚拟环境..."
|
||||
python3 -m venv venv
|
||||
echo "✅ 虚拟环境创建成功"
|
||||
else
|
||||
echo "✅ 虚拟环境已存在"
|
||||
# 检查虚拟环境是否正常
|
||||
if [ ! -f "venv/bin/pip" ]; then
|
||||
echo "⚠️ 虚拟环境可能已损坏,正在重新创建..."
|
||||
rm -rf venv
|
||||
python3 -m venv venv
|
||||
echo "✅ 虚拟环境重新创建成功"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 4. 激活虚拟环境并安装 Python 包
|
||||
echo ""
|
||||
echo "步骤 4: 安装 Python 依赖包..."
|
||||
|
||||
# 检查并修复 activate 脚本的行尾符问题
|
||||
if [ -f "venv/bin/activate" ]; then
|
||||
# 修复可能的行尾符问题
|
||||
sed -i 's/\r$//' venv/bin/activate 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 激活虚拟环境
|
||||
source venv/bin/activate
|
||||
|
||||
# 验证虚拟环境是否正常激活
|
||||
if [ -z "$VIRTUAL_ENV" ]; then
|
||||
echo "❌ 错误: 虚拟环境激活失败,尝试重新创建..."
|
||||
deactivate 2>/dev/null || true
|
||||
rm -rf venv
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
fi
|
||||
|
||||
# 升级 pip(使用 python3 -m pip 避免行尾符问题)
|
||||
echo "升级 pip..."
|
||||
python3 -m pip install --upgrade pip
|
||||
|
||||
# 安装依赖
|
||||
echo "安装 DrissionPage..."
|
||||
python3 -m pip install DrissionPage
|
||||
|
||||
# 可选:如果需要数据库功能
|
||||
read -p "是否需要数据库功能?(sqlalchemy, pymysql) [y/N]: " need_db
|
||||
if [ "$need_db" = "y" ] || [ "$need_db" = "Y" ]; then
|
||||
echo "安装数据库相关包..."
|
||||
python3 -m pip install sqlalchemy pymysql
|
||||
fi
|
||||
|
||||
deactivate
|
||||
|
||||
# 5. 创建运行脚本
|
||||
echo ""
|
||||
echo "步骤 5: 创建便捷运行脚本..."
|
||||
cat > run_logistics.sh << 'EOF'
|
||||
#!/bin/bash
|
||||
# 激活虚拟环境并运行物流提取脚本
|
||||
|
||||
# 获取脚本所在目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# 检查虚拟环境是否存在
|
||||
if [ ! -d "venv" ]; then
|
||||
echo "❌ 错误: 虚拟环境不存在,请先运行 setup_ubuntu.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 修复可能的行尾符问题
|
||||
if [ -f "venv/bin/activate" ]; then
|
||||
sed -i 's/\r$//' venv/bin/activate 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 激活虚拟环境
|
||||
source venv/bin/activate
|
||||
|
||||
# 验证虚拟环境是否激活成功
|
||||
if [ -z "$VIRTUAL_ENV" ]; then
|
||||
echo "❌ 错误: 虚拟环境激活失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 使用虚拟环境中的 Python3
|
||||
PYTHON_CMD="$VIRTUAL_ENV/bin/python3"
|
||||
if [ ! -f "$PYTHON_CMD" ]; then
|
||||
PYTHON_CMD="python3"
|
||||
fi
|
||||
|
||||
# 检查脚本文件是否存在
|
||||
SCRIPT_FILE="jd/fetch_logistics_ubuntu.py"
|
||||
if [ ! -f "$SCRIPT_FILE" ]; then
|
||||
echo "❌ 错误: 找不到脚本文件 $SCRIPT_FILE"
|
||||
echo "当前目录: $(pwd)"
|
||||
echo "请确保脚本文件存在"
|
||||
deactivate
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 运行脚本
|
||||
echo "使用 Python: $PYTHON_CMD"
|
||||
echo "运行脚本: $SCRIPT_FILE"
|
||||
echo "参数: $@"
|
||||
echo ""
|
||||
|
||||
$PYTHON_CMD "$SCRIPT_FILE" "$@"
|
||||
|
||||
# 保存退出码
|
||||
EXIT_CODE=$?
|
||||
|
||||
# 退出虚拟环境
|
||||
deactivate
|
||||
|
||||
# 返回脚本的退出码
|
||||
exit $EXIT_CODE
|
||||
EOF
|
||||
|
||||
chmod +x run_logistics.sh
|
||||
|
||||
# 6. 完成
|
||||
echo ""
|
||||
echo "=========================================="
|
||||
echo "✅ 环境设置完成!"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
echo "快速开始:"
|
||||
echo " 方式1: 使用便捷脚本"
|
||||
echo " ./run_logistics.sh"
|
||||
echo ""
|
||||
echo " 方式2: 手动运行"
|
||||
echo " source venv/bin/activate"
|
||||
echo " python jd/fetch_logistics_ubuntu.py"
|
||||
echo " deactivate"
|
||||
echo ""
|
||||
echo "浏览器路径: $CHROME_PATH"
|
||||
echo "虚拟环境: $(pwd)/venv"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user