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 文件
337 lines
7.7 KiB
Bash
337 lines
7.7 KiB
Bash
#!/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 |