我已经安装了python3.7(通过包管理,因为它是官方 ubuntu 存储库的一部分)但如果我想删除 python3.6(sudo apt remove python3.6
),apt 建议删除各种东西,如 libreoffice。我猜 libreoffice 也可以使用 3.7,但包管理不能只是“切换”依赖项。
编辑:
所有软件包均已安装最新版本。我刚刚更新了:
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
编辑2:
我认为问题是这样的:有些软件包依赖 python 3。现在我已经安装了 3.7 并尝试删除 3.6,软件包管理认为依赖关系不再得到满足。
如果不是这种情况,我如何列出已安装且依赖于 3.6 但不依赖于 3.7 的软件包?
编辑3:
卸载 python3.6 并不实际,因为很多软件包都依赖于此版本,并且对 3.7 不满意。例如 gedit 不喜欢 3.7:https://packages.ubuntu.com/cosmic/gedit
答案1
只需按下键盘上的Ctrl+ Alt+T即可打开终端。打开后,运行以下命令:
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -xvf Python-3.7.1.tgz
cd Python-3.7.1
sudo ./configure --enable-optimizations
sudo make -j8
sudo make install
您可以保留两个 Python 版本,并根据需要使用其中一个。我认为删除它不是一个好主意,但如果您仍想删除 python3.6,则以下命令应该可以解决问题:
sudo apt-get purge python3.6
Ubuntu 也依赖 Python 来运行,因此要对你正在做的事情极其小心。
答案2
你不能在不破坏系统的情况下删除“较旧”的 Python 版本。与依赖ldconfig
LD Linker 链接到其库并有时可以链接到更新的库源的源安装不同,Ubuntu 和 Debian 软件包在编译时在软件包元数据本身中定义其依赖项。此元数据是锁定一旦软件包发布,如果您尝试删除依赖项(例如较旧的 Python),您的系统无疑会崩溃,因为所有依赖的 Python 脚本和库“可能会被删除”。这就是为什么您不能只“卸载”旧 Python,而不会破坏系统中的其他软件包。
如果你想要更新的 Python,可以安装新的软件包以及现有的系统安装的 Python 版本,也可以从源代码安装,或者使用以下方法如何在 Ubuntu 上安装最新的 Python 2.7.X 或 3.X?然后使用virtualenv
这些较新的二进制版本构建 Python 虚拟环境;这样,您就可以为不同的项目使用不同的 Python 版本。你真的应该不是删除系统安装的 Python,这样你就可以拥有“最新和最好的”版本。一些较新的 Python 可能在存储库中,但我向你保证,其余软件包尚未依赖于这些“较新的版本”,因此你仍然无法安全地删除系统附带的 3.6。