Mars 6ddba3e722 Initial commit
feat: 完成 Zsh 插件配置脚本的优化和测试 - 修复 autojump 配置冲突 - 清理重复的插件安装 - 优化脚本结构和注释

feat: 优化shell脚本 - 1. 增强错误处理和恢复机制 2. 添加网络连接优化和镜像源支持 3. 改进进度显示和用户交互 4. 优化配置文件管理和备份 5. 改进插件管理机制 6. 增强依赖检查和安装 7. 添加完整的日志记录功能 8. 修复字体安装相关问题

docs: 完善shell、system和utils部分的README文档 - 1. 添加详细的脚本说明和使用方法 2. 补充依赖要求和注意事项 3. 添加常见问题解答 4. 更新版本日志

feat(editor): 优化 neovim 和 nvchad 安装脚本,添加性能优化配置和详细文档

feat: 优化Python开发环境安装脚本,分离基础包和机器学习包,修复virtualenvwrapper配置

feat: 优化开发工具安装脚本,统一使用common.sh中的函数,改进错误处理

fix: 修复DNMP安装脚本,跳过自动配置PHP开发环境

fix: 提交删除的 init.sh 和 mysql.sh 文件
2025-03-25 16:14:03 +08:00

337 lines
7.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 导入公共函数
source "$(dirname "$0")/../utils/common.sh"
# 安装系统依赖
install_dependencies() {
log_info "安装系统依赖..."
# 安装Python开发相关包
check_dependencies \
python3-dev \
python3-pip \
python3-venv \
build-essential \
libssl-dev \
libffi-dev \
libxml2-dev \
libxslt1-dev \
zlib1g-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
libncursesw5-dev \
xz-utils \
tk-dev \
libxmlsec1-dev \
libffi-dev \
liblzma-dev
log_success "系统依赖安装完成"
}
# 安装pyenv
install_pyenv() {
log_info "安装pyenv..."
# 切换到用户目录
cd "${USER_HOME}"
# 以用户身份下载并安装pyenv
su - $CURRENT_USER << EOF
# 下载pyenv安装脚本
curl -L https://pyenv.run | bash
# 设置环境变量
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
eval "\$(pyenv virtualenv-init -)"
EOF
# 备份现有配置
manage_config "backup" "${USER_HOME}/.zshrc"
# 配置pyenv
cat >> "${USER_HOME}/.zshrc" << EOF
# pyenv配置
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
eval "\$(pyenv virtualenv-init -)"
EOF
# 确保.pyenv目录权限正确
chown -R $CURRENT_USER:$CURRENT_USER "${USER_HOME}/.pyenv"
log_success "pyenv安装完成"
}
# 安装Python
install_python() {
log_info "安装Python..."
# 切换到用户目录
cd "${USER_HOME}"
# 以用户身份运行命令
su - $CURRENT_USER << EOF
# 设置环境变量
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
# 安装Python依赖
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
# 安装最新的Python 3.11
pyenv install 3.11.7
# 设置全局Python版本
pyenv global 3.11.7
# 验证安装
python --version
EOF
log_success "Python安装完成"
}
# 配置pip
configure_pip() {
log_info "配置pip..."
# 切换到用户目录
cd "${USER_HOME}"
# 以用户身份运行命令
su - $CURRENT_USER << EOF
# 设置环境变量
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
# 升级pip
python -m pip install --upgrade pip
# 设置pip镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装pip工具
pip install wheel setuptools
EOF
log_success "pip配置完成"
}
# 安装基础Python包
install_python_packages() {
log_info "安装基础Python包..."
# 切换到用户目录
cd "${USER_HOME}"
# 以用户身份运行命令
su - $CURRENT_USER << EOF
# 设置环境变量
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
# 创建并激活虚拟环境
python -m venv \$HOME/.venv
source \$HOME/.venv/bin/activate
# 升级pip
python -m pip install --upgrade pip
# 设置pip镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装开发工具
pip install ipython
pip install jupyter
pip install jupyterlab
pip install black
pip install flake8
pip install mypy
pip install pylint
pip install pytest
pip install pytest-cov
# 安装数据处理工具
pip install numpy
pip install pandas
# 安装Web开发工具
pip install django
pip install flask
pip install fastapi
pip install uvicorn
pip install sqlalchemy
pip install alembic
# 安装其他工具
pip install requests
pip install python-dotenv
pip install rich
pip install tqdm
# 退出虚拟环境
deactivate
EOF
# 备份现有配置
manage_config "backup" "${USER_HOME}/.zshrc"
# 添加虚拟环境激活命令到配置文件
cat >> "${USER_HOME}/.zshrc" << EOF
# 激活Python虚拟环境
source \$HOME/.venv/bin/activate 2>/dev/null || true
EOF
log_success "基础Python包安装完成"
}
# 安装机器学习包
install_ml_packages() {
log_info "安装机器学习包..."
# 切换到用户目录
cd "${USER_HOME}"
# 以用户身份运行命令
su - $CURRENT_USER << EOF
# 设置环境变量
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
# 激活虚拟环境
source \$HOME/.venv/bin/activate
# 安装科学计算和可视化工具
pip install scipy
pip install matplotlib
pip install seaborn
# 安装机器学习工具
pip install scikit-learn
pip install tensorflow
pip install torch
pip install transformers
# 退出虚拟环境
deactivate
EOF
log_success "机器学习包安装完成"
}
# 配置虚拟环境
configure_venv() {
log_info "配置虚拟环境..."
# 切换到用户目录
cd "${USER_HOME}"
# 以用户身份运行命令
su - $CURRENT_USER << EOF
# 设置环境变量
export PYENV_ROOT="\$HOME/.pyenv"
export PATH="\$PYENV_ROOT/bin:\$PATH"
eval "\$(pyenv init --path)"
eval "\$(pyenv init -)"
# 使用主虚拟环境安装virtualenvwrapper
source \$HOME/.venv/bin/activate
pip install virtualenvwrapper
# 创建必要的目录
mkdir -p \$HOME/.virtualenvs
mkdir -p \$HOME/projects
deactivate
EOF
# 备份现有配置
manage_config "backup" "${USER_HOME}/.zshrc"
# 配置virtualenvwrapper
cat >> "${USER_HOME}/.zshrc" << EOF
# virtualenvwrapper配置
export WORKON_HOME=\$HOME/.virtualenvs
export PROJECT_HOME=\$HOME/projects
export VIRTUALENVWRAPPER_PYTHON=\$HOME/.venv/bin/python
source \$HOME/.venv/bin/virtualenvwrapper.sh
EOF
# 确保virtualenvwrapper.sh存在
if [ ! -f "${USER_HOME}/.venv/bin/virtualenvwrapper.sh" ]; then
log_error "virtualenvwrapper.sh 不存在,虚拟环境配置可能不完整"
return 1
fi
# 设置正确的权限
chown -R $CURRENT_USER:$CURRENT_USER "${USER_HOME}/.venv"
chmod +x "${USER_HOME}/.venv/bin/virtualenvwrapper.sh"
log_success "虚拟环境配置完成"
}
# 主函数
main() {
# 检查root权限
check_root
# 获取用户信息
get_user_info
# 设置日志
setup_logging
log_info "开始安装Python开发环境..."
# 安装系统依赖
install_dependencies
# 安装pyenv
install_pyenv
# 安装Python
install_python
# 配置pip
configure_pip
# 安装基础Python包
install_python_packages
# 配置虚拟环境
configure_venv
# 询问是否安装机器学习包
read -p "是否安装机器学习相关包?这些包体积较大,安装时间较长。(y/N) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
install_ml_packages
fi
log_success "Python开发环境安装完成"
log_info "请运行 'source ~/.zshrc' 或重新打开终端以使环境变量生效。"
}
# 设置清理函数
trap cleanup EXIT
# 执行主函数
main