Linux升级python到3.8.2(源码编译)
Linux升级python到3.8.2系统环境 Ubuntu 18.04, 记一次升级过程, 以免搞忘了.1 卸载已安装的python我的环境使用apt安装了python3.6和python3.8, 现在卸载这两个. 然后使用源码编译安装最新版python3.8.2.# 卸载3.6sudo apt purge python3.6# 查看系统还有哪些python包sudo dpkg -l | gre
Linux升级python到3.8.2
系统环境 Ubuntu 18.04, 记一次升级过程, 以免搞忘了.
1 卸载已安装的python
我的环境使用apt安装了python3.6和python3.8, 现在卸载这两个. 然后使用源码编译安装最新版python3.8.2.
# 卸载3.6
sudo apt purge python3.6
# 查看系统还有哪些python包
sudo dpkg -l | grep python
# 清除配置
sudo apt purge python3.6-minimal python3.6-dev python3.6-venv python3
# 删除3.6的pip安装的包
sudo rm -rf /usr/local/lib/python3.6
rm -rf ~/.local/lib/python3.6
# 同理卸载python3.8
sudo apt purge python3.8-minimal python3.8-venv python3.8
# 删除3.8的pip安装的包
sudo rm -rf /usr/local/lib/python3.8
rm -rf ~/.local/lib/python3.8
# 自动卸载不需要的包
sudo apt autoremove # 可能会误删一些包, 不过不怕, 以后缺什么再安装什么
# 安装一个常用的但被误卸载的软件
sudo apt install wget
# 删除为了满足某些依赖安装的,但现在不再需要的软件包
sudo apt autoclean
2 从源码编译安装python
mkdir -p ~/src; cd ~/src # 下载源码包 放到该目录
# 解压源码
tar -zxf Python-3.8.2.tgz
# 编译源码
# 进入源码目录
cd ~/src/Python-3.8.2
# configure
./configure
# 使用make命令编译源码 -j表示并行数量
make -j64
这里要查看是否有module没有成功, 比如我这里显示没有成功的模块有
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 _tkinter _uuid
readline
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
安装相关依赖再进行编译
# 安装依赖
sudo apt update
sudo apt install libgdbm-dev tk-dev libsqlite3-dev libncurses5-dev libffi-dev liblzma-dev libreadline-dev libbz2-dev libssl-dev uuid-dev libgdbm-compat-dev
# 使用configure生成构建档
./configure
# 使用make命令编译源码 -j表示并行数量
make -j64
然后看提示还会有报错信息: uuid和curses会编译出错. 处理方法参考: python编辑错误解决
# 解决curses的错误
sed -i "s/Werror=implicit-function-declaration/Wno-error/g" configure
# 解决uuid的错误 设置环境变量
export CPPFLAGS=" -Wno-error=coverage-mismatch"
# 重新运行configure
./configure
# 编译
make -j64
确保不再有报错信息, 再使用make编译后的文件进行安装
# 安装
sudo make install
# 重新软链接
sudo rm -rf /usr/local/bin/{python,pip}
sudo ln -sf /usr/local/bin/python3 /usr/local/bin/python
sudo ln -sf /usr/local/bin/pip3 /usr/local/bin/pip
# 更新pip
sudo pip install --upgrade pip
# 全局安装 wheel 和 virtualenv
sudo pip install wheel
sudo pip install virtualenv
3 安装 lightGBM 和 xgboost
参考文档: 官网
# 更新cmake工具 安装 lightGBM 和 xgboost 需要cmake来进行编译
# 卸载cmake
sudo apt purge cmake
# 下载源码
cd ~/src; # 下载 cmake-3.17.0.tar.gz 放到该目录
# 解压源码
tar -zxf cmake-3.17.0.tar.gz && cd cmake-3.17.0
# 编译cmake
./bootstrap
make -j64
# 安装cmake
sudo make install
# lightGBM 安装方式有两种 可以使用pip安装 以下两种方式选一种即可, 我使用源码安装
# 方式 1 使用源码编译安装lightGBM gpu版本
# 启用代理
source /opt/.net_env
# 下载源码
cd ~/src
git clone --recursive https://github.com/microsoft/LightGBM
# 使用cmake生成构建档 并使用make编译
mkdir -p LightGBM/build && cd LightGBM/build
cmake -DUSE_GPU=1 ..
make -j64
# 生成 whl 包
cd ../python-package
python setup.py bdist_wheel
# 使用 pip 安装 whl 包
pip install --user dist/lightgbm-2.3.2-py3-none-any.whl
# 方式 2 使用pip安装 gpu版本
pip install lightgbm --install-option=--gpu # 如果遇到权限错误 用sudo提权
# 安装xgboost 安装方式有两种 可以使用pip安装 以下两种方式选一种即可, 我使用源码安装
# 方式 1 使用源码编译安装 xgboost 支持gpu版本
cd ~/src
git clone --recursive https://github.com/dmlc/xgboost
mkdir -p xgboost/build && cd xgboost/build
# 使用cmake生成构建档 并使用make编译
cmake .. -DUSE_CUDA=ON
make -j64
# 生成 whl 包
cd ../python-package
python setup.py bdist_wheel
# 使用 pip 安装 whl 包
pip install --user dist/xgboost-1.1.0_SNAPSHOT-cp38-cp38-linux_x86_64.whl
# 测试xgboost
python tests/benchmark/benchmark_tree.py --tree_method=gpu_hist # 4.32秒
python tests/benchmark/benchmark_tree.py --tree_method=hist # 14.98秒
# 方式 2 使用pip安装
pip install xgboost # 如果遇到权限错误 用sudo提权
# 至于其他包 使用pip安装即可
lightgbm和xgboost安装gpu版本, 我的测试结果: 日常训练模型速度会提升近10倍(使用cpu训练用19分37秒, 使用gpu用时2分14秒).
4 删除临时文件
rm -rf /tmp/*
rm -rf /var/cache/apt/*
rm -rf ~/.cache/pip/*
5 添加环境变量
我习惯使用非root权限来pip安装包, 所以需要添加可执行程序目录到 PATH 环境变量中. 新建 ~/.profile
添加环境变量, 然后在 ~/.bash_profile
和 ~/.zshrc
中引入该文件, 以便对我的 bash 和 zsh 环境都生效, 后期加环境变量也不用配置两次
~/.profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
~/.bash_profile
和 ~/.zshrc
中增加以下内容
# if ~/.profile exists
if [ -f ~/.profile ]; then
. ~/.profile
fi
6 管理jupyter的kernel
python 升级之后, 之前的jupyter的kernel还可能是旧的配置, 如果需要管理, 可以使用以下的方法进行. 参考文档: 这里
查看当前的内核
jupyter kernelspec list
删除指定的内核
jupyter kernelspec remove KERNEL_NAME
增加指定的内核
# 比如想要增加哪个路径下的python 就执行对应目录的python就行了
/home/user-name/anaconda3/envs/newenv/bin/python -m ipykernel install --name XXXX
完。
更多推荐
所有评论(0)