Ubuntu升级后干净地卸载Python软件包

时间:2019-07-09 03:19:58

标签: python ubuntu

我最近使用命令行将一台计算机从Ubuntu Server 16.04 LTS升级到了18.04 LTS。结果,内置的Python安装从Python 3.5升级到了3.6。而且似乎所有先前使用pip3安装的Python软件包都不再可用。我计划清理所有这些软件包,并将conda用于Python软件包管理。我的问题是,在这种情况下彻底卸载那些无法访问的软件包的最佳做法是什么?

通过pip3安装的旧软件包主要位于/usr/local/lib/python3.5/~/.local/lib/python3.5/下。但是可能还有其他剩余文件,例如在/usr/local/bin/下。我想删除pip3 install随附的所有相关文件。

2 个答案:

答案 0 :(得分:0)

sudo pip install将pip软件包安装到/usr/local/lib/<python_version>/dist-packages,并将apt软件包安装到/usr/lib/<python_version>/dist-packages。检查这些目录并删除不需要的软件包。

答案 1 :(得分:0)

我最终写了一个bash脚本来迭代地对每个先前安装的软件包调用pip3 uninstall

#!/bin/bash

pypath_cmd="PYTHONPATH=$HOME/.local/lib/python3.5/site-packages"
export $pypath_cmd
echo "Uninstalling editable packages in $PYTHONPATH"
rm -f $PYTHONPATH/*.egg-link
rm -f $PYTHONPATH/easy-install.pth

pip3 freeze --all --local | cut --delimiter="=" -f 1 | while read pkg ; do
    echo $pkg: $(pip3 show $pkg | grep "Location:")
    pip3 uninstall -y $pkg
done

pypath_cmd="PYTHONPATH=/usr/local/lib/python3.5/dist-packages"
export $pypath_cmd
echo "Uninstalling editable packages in $PYTHONPATH"
sudo rm -f $PYTHONPATH/*.egg-link
sudo rm -f $PYTHONPATH/easy-install.pth

pip3 freeze --all --local | cut --delimiter="=" -f 1 | while read pkg ; do
    echo $pkg: $(pip3 show $pkg | grep "Location:")
    sudo $pypath_cmd pip3 uninstall -y --no-cache-dir $pkg
done