将 Python 安装恢复为默认安装,并添加 apt 包依赖项

将 Python 安装恢复为默认安装,并添加 apt 包依赖项

我对我的 Python 安装 (2 和 3) 进行了大量尝试,安装了许多软件包,一些使用apt-get,但大多数使用pip。我还将许多apt使用 安装 的软件包升级pip到了较新的版本。

我的问题是:
我怎样才能撤消所有这些更改,删除所有pip已安装的 Python 包,并仅保留其默认存储库版本中的默认预安装包集,以及由apt-get其他软件安装但仅作为其依赖项的包,并在必要时始终降级到存储库版本。

我想这样做是为了为系统提供一个整洁的 Python 环境,并且仅在虚拟环境中进行我的修改。

不重新安装系统可以实现吗?我该如何处理?

答案1

我将首先列出所管理的 Python 包apt-get(下面的一行代码需要几秒钟才能运行,请耐心等待):

$ for pyfile in `ls /usr/lib/python2.7/dist-packages`; do dpkg -S "/usr/lib/python2.7/dist-packages/${pyfile}" | sed 's/:.*//g'; done | sort -u

注意:如有必要,请将 2.7 替换为您感兴趣的任何 Python 版本。

接下来,卸载手动安装的软件包。如果你不确定安装了哪些软件包,可以使用以下命令获取所有手动安装的软件包的列表(请参阅这个问题):

$ comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

然后卸载你手动安装的 Python 包,例如:

$ sudo apt-get remove python-tk python-scipy

接下来,您想知道使用 pip 安装了哪些包:

$ ls -ltd /usr/local/lib/python2.7/dist-packages/*

此命令按上次修改日期排序列出 pip 安装目录的内容,让您更轻松地找到自己安装的软件包。例如,我安装了 Google 的gcloud工具,该工具会安装一堆我不想卸载的 pip 软件包,但查看列表很容易发现它们都是在同一时间安装的,所以我知道哪些应该保留,哪些可以卸载。在卸载任何 pip 软件包之前,您应该对已安装的软件包列表进行快照:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

然后只需卸载您想要的软件包,例如:

$ sudo pip uninstall py pytest

最后,不要忘记您的用户目录中可能已经安装了某些 pip 包。也许您对此不介意,但如果不介意,您可以列出它们:

$ ls -ltd $HOME/.local/lib/python2.7/site-packages/*

如果你想删除所有这些包,你可以删除这个目录。否则,只需卸载单个包,例如:

$ pip uninstall tensorflow

不要忘记检查其他 Python 版本(例如 3.5)。

相关内容