莫名其妙安装了很多 python

好家伙 有 python2.7,有 python3.8,还有 python3.9
我想连同他们及 pip 全干掉 然后重新安装一个 python3.8 或者 3.9
最佳的清理办法应该是怎么样?

这个问题都成梗了


https://xkcd.com/1987/

到底咋办呀 T A T

如果在用 openSUSE 的话,平行地从软件源安装好几个 python 是特性,其他的版本可能是其它软件的依赖,直接删掉不清楚会有什么后果。

GitHub - openSUSE/python-rpm-macros: Multi-Python, Single-Spec macros generator

解决方法就是选一个主版本咯,

  • /usr/bin/python3.9/bin/python3.9 是没有区别的,只不过是历史原因弄了两个,其中一个是另一个的符号链接
  • 可以用 which python3 查看目前的 python3 指向的版本
  • 然后用 update-alternatives --list python 来切换主版本,也就是 /usr/bin/python3pip3 指向的那个
  • 对应 X.Y 版本的包会被安装到 /usr/lib/pythonX.Y/site-packages 里面
  • 操作 pip 的时候可以 python3.9 -m pip --user install 来精确选择 py 的版本

不过我的做法是躺平,每开一个项目建一个新的 virtualenv,自己的项目和操作系统的那一堆隔离。

3赞

python3.9 原来是我装的一个 3d 软件带的 (blender),后来想了想我貌似就没用过它 (我也就是拿来画一些分子结构图, 不过这么简单的东西 mayavi 就能做),于是给卸载了 (连同依赖)。 >_<

问个问题,就是今后 openSUSE 的 python 主版本从 3.8 更新到 3.9 的时候, pip 里面装好的包需要重新安装还是他会自动更新? (

如果说的是手动用 pip --user install 的包,会进入到对应版本里面的。

~/.local/lib/python3.9/site-packages/
~/.local/lib/python3.8/site-packages/

对应的 python 版本对应不同的 pip。升级到 3.9 或 3.10, 需要重新装一下。不过 pip 可以导出一个 requirement.txt 然后可以在新版本里面导入。

如果说的是操作系统的那些软件,大部分会自动换到新的版本。不过有一些软件跟不上滚动更新的节奏,会继续依赖老版本,也就是为什么要 multiple-python。对比起来,隔壁 Arch Linux 只保留最新版本的 python,大版本更新的时候一些没有跟进新版本的软件就暂时凉凉了。

Venv 永远的神

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。