我只是尝试升级我的 CentOS 机器上的 Python 安装。经过几次失败后,我做到了yum remove python
。
然后问题开始发生。yum
在机器上发现了大约300个依赖项,在我确认操作后,几乎每个命令和实用程序都变得不可用,包括,,,ls
本身......我别无选择,只能重新启动实例(我很庆幸它只是一台开发机器。)wget
yum
我想知道删除 python 是否如此有害,有什么方法可以优雅地删除 python 吗?
答案1
许多 Linux 发行版都需要 Python。发行版提供商组合的许多系统实用程序(基于 GUI 的或不基于 GUI 的)都是用 Python 编程的。
系统实用程序所使用的 Python 版本我将称为“主”Python。对于 Ubuntu 12.04,例如,这是 2.7.3,您python
在新安装的系统上调用时获得的版本。
由于系统实用程序是用 python 编写的,因此不可能在不破坏系统的情况下删除主 python。甚至还需要花很多心思更新主Python与同一major.minor系列中的更高版本,因为您需要使用与主Python相同的配置规范来编译它。这是获得主 python 使用的库的正确搜索路径所必需的,.configure
当您下载 python 从源代码进行 python 编译时,这通常并不完全是不带选项的情况。
安装与系统使用的major.minor版本(即主python)不同的版本通常不是问题。即您可以编译 2.6 或 3.4 python 并毫无问题地安装它,因为这是安装的下一个到主(2.7.X)python。有时发行版会提供这些不同的 Major.minor 软件包,但它们可能不是该系列中的最新错误发布版本。
当您想要使用主要 python 系列中的最新版本时(例如,主要 python 版本为 2.7.3 的系统上的 2.7.8),问题就会出现。我建议不要尝试替换主 python,而是在单独的位置编译并安装 2.7.8(我的位于 /opt/python/2.7.8)。这将使您遵守发行版的安全修复计划,并保证其他人测试 python 库和该版本的兼容性(如系统实用程序所使用的!)。
对于使用该版本的 python 的任何开发,请使用虚拟环境, (或者虚拟环境包装器)并使用以下命令设置 2.7.8 环境:
virtualenv -p /opt/python/2.7.8/bin/python /tmp/test
source /tmp/test/bin/activate
(第二行假设您正在使用bash
)