CentOS7 多个python版本共存,解决yum命令安装错误:SyntaxError: invalid syntax 由于用户取消而退出

本文介绍在CentOS7系统中实现Python2和Python3版本共存的方法,包括修改yum配置文件以确保系统稳定运行。对于正在从Python2迁移至Python3的开发者,这是一个实用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

默认情况下,当你安装完CentOS 7操作系统后,默认安装的是Python2.7。而且yum(Yellowdog update Modified)命令使用的Python 2。随着时代的变化,Python的版本是蹭蹭蹭的往上更新迭代,到了Python 3之后,就完全没有想往下兼容了(喜新厌旧嘛),而且在工作当中,很多公司也正在极力把Python 2的代码往Python 3上面迁移。那么现在就出现了一个问题:我们该如何进行进行Python多版本的共存呢(在工作开发过程中,Python 2迁移到Python 3是需要一段时间的,有时调试代码,你还得需要Python 2的支持,所以你不可能一下子马上卸载掉Python 2)?因为有很多博主已经写了很好的教程,我就直接借鉴并简化一下:CentOS7.2 多个python版本共存https://www.cnblogs.com/sanduzxcvbnm/p/5984352.html

1、必须修改的两个yum配置文件

因为yum使用python2,因此替换为python3后可能无法正常工作,继续使用这个python2.7.5,因此需要修改yum相关配置文件。

> vi /usr/bin/yum

第一行:#!/usr/bin/python --> #!/usr/bin/python2.7

> vi /usr/libexec/urlgrabber-ext-down

第一行:#!/usr/bin/python --> #!/usr/bin/python2.7

完成上面两步,现在使用yum命令基本不会出现这样的错误:SyntaxError: invalid syntax  由于用户取消而退出

好了,先这样吧,等之后有时间再补充其他的知识点。

<think>我们正在回答用户的问题:如何在Linux系统中正确使用yum安装Python 3 根据提供的引用,特别是引用[1]和引用[3],我们可以总结出以下步骤: 1. 确保系统已安装必要的开发工具和依赖库。因为编译Python源码或安装预编译包可能需要这些工具。 2. 添加包含Python 3的软件源(如果默认源中没有Python 3或版本过低)。但用户可能已经配置了阿里云的yum源(如引用[3]所示),或者需要配置EPEL源。 3. 使用yum命令安装Python 3。 但是,请注意,不同的Linux发行版可能有所不同。用户提到的是CentOS7(引用[1]中提到了centos7),因此我们以CentOS7为例。 在CentOS7中,默认的yum仓库可能不包含Python 3.8,但可以通过EPEL(Extra Packages for Enterprise Linux)源或SCL(Software Collections)来安装。 根据引用[1]和引用[3]的提示,我们首先需要安装开发工具组和依赖包,然后安装Python 3.8。 然而,引用[1]中给出的命令安装开发工具组,引用[3]中则列出了大量的开发库。这些是编译Python源码时需要的,但如果我们通过yum直接安装预编译的Python 3,则可能不需要全部编译依赖。不过为了确保安装成功,我们可能需要先安装这些依赖。 但注意:用户希望使用yum安装,而不是从源码编译。因此,我们应优先考虑通过添加包含Python3.8的yum源来安装。 步骤: 1. 安装开发工具和依赖(为可能的编译做准备,或者某些包需要): sudo yum groupinstall "Development Tools" sudo yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 2. 添加EPEL源(如果系统尚未安装): sudo yum install epel-release 3. 添加SCL源(Software Collections)以获取较新的Python版本(CentOS7默认的EPEL可能只提供Python3.4或3.6,而SCL提供更新的版本): sudo yum install centos-release-scl 4. 安装Python 3.8(在SCL中,Python3.8的包名为rh-python38): sudo yum install rh-python38 5. 启用Python 3.8环境: scl enable rh-python38 bash 或者,我们也可以使用EPEL源中的Python3.8(如果EPEL提供了的话): sudo yum install python38 但是,根据CentOS的版本和EPEL的更新情况,可能直接通过EPEL安装的版本就是3.8。因此,我们可以先尝试: sudo yum install python38 如果不行,再使用SCL的方式。 另外,引用[2]提到基于Ubuntu/Debian的系统使用APT安装,但用户CentOS,所以我们不考虑。 因此,总结步骤: 步骤1:安装必要的开发工具和依赖(引用[1]和[3]) 步骤2:启用EPEL仓库(如果尚未启用) 步骤3:启用SCL仓库(如果需要安装较新版本) 步骤4:安装Python3.8(根据仓库中的包名) 但是,请注意,在CentOS7中,通过EPEL仓库可以直接安装python3.8吗?我们查一下: 实际上,在EPEL仓库中,对于CentOS7,提供了python3.6和python3.8(在epel-testing仓库中)?但更常见的做法是使用SCL。 或者,我们可以使用第三方仓库,如IUS(https://ius.io/),但用户要求使用yum,且没有特别指定第三方仓库,所以我们优先使用官方和半官方的仓库(如EPEL和SCL)。 因此,我们给出两种方法: 方法一:使用EPEL仓库安装Python3.8(如果EPEL仓库有的话) 步骤: 1. 安装EPEL: sudo yum install epel-release 2. 安装Python3.8: sudo yum install python38 但是,在CentOS7的EPEL仓库中,默认可能没有python38,而是python36。因此,我们可以先更新EPEL,或者启用epel-testing仓库(不推荐,因为测试仓库可能不稳定)。 方法二:使用SCL安装 步骤: 1. 安装CentOS SCL仓库: sudo yum install centos-release-scl 2. 安装rh-python38: sudo yum install rh-python38 3. 启用该软件集: scl enable rh-python38 bash 注意:使用SCL安装Python不会替换系统的Python,而是安装在/opt/rh/rh-python38/root/usr/bin/目录下,并且通过scl命令启用。这样不会影响系统自带的Python(如python2.7)。 方法三:从源码编译安装(但用户要求yum安装,所以不作为首选,但我们可以提供作为备选) 但是,用户明确要求使用yum安装,所以我们优先使用方法一或方法二。 现在,我们根据引用[1]中提到的centos7安装python3.8,实际上引用[1]中并没有给出具体的安装命令,而是提到了安装开发工具。所以,我们结合引用[3](阿里云的yum源)来配置。 引用[3]的标题是“linux安装配置阿里云的yum源和python3”,所以我们也可以先配置阿里云的yum源(包括base、epel、scl等),然后安装。 配置阿里云的yum源(CentOS7)步骤: 1. 备份原yum源 cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/ 2. 下载阿里云的repo文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 3. 清理缓存并生成新的缓存 yum clean all yum makecache 然后,再尝试安装python38(如果阿里云的epel源中有的话)或者安装SCL仓库(centos-release-scl)后安装rh-python38。 因此,综合以上,我们给出一个完整的步骤(假设用户使用CentOS7,并希望安装Python3.8): 步骤一:配置阿里云的yum源(可选,但可以加速下载) 步骤二:安装必要的开发工具和依赖(为编译或安装提供支持) 步骤三:安装EPEL仓库和SCL仓库 步骤四:尝试安装python38(如果EPEL中有)或者安装rh-python38 具体命令: 1. 配置阿里云yum源(可选): ``` sudo mv /etc/yum.repos.d /etc/yum.repos.d.backup sudo mkdir /etc/yum.repos.d sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sudo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo sudo yum clean all sudo yum makecache ``` 2. 安装开发工具和依赖: ``` sudo yum groupinstall "Development Tools" sudo yum install -y gcc patch libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel ``` 3. 安装EPEL和SCL仓库(如果已经配置阿里云源,则epel.repo已经包含,这里只需安装SCL仓库): ``` sudo yum install epel-release sudo yum install centos-release-scl ``` 4. 尝试安装python38(如果EPEL仓库中有): ``` sudo yum install python38 ``` 如果成功,则安装完成。如果找不到python38包,则尝试安装SCL的Python3.8: ``` sudo yum install rh-python38 ``` 5. 如果通过SCL安装,则使用以下命令启动Python3.8环境(临时): ``` scl enable rh-python38 bash ``` 或者,可以将以下内容添加到~/.bashrc中,以便每次启动bash时自动启用: ``` source scl_source enable rh-python38 ``` 注意:rh-python38提供的Python解释器名称为`python3.8`,但可能不会直接替换`python3`命令。我们也可以创建软链接(但要注意不要覆盖系统默认的python命令,因为系统工具可能依赖python2.7)。 例如,在/usr/bin中创建指向python3.8的软链接(可选,但需谨慎): ``` sudo ln -s /opt/rh/rh-python38/root/usr/bin/python3.8 /usr/bin/python3 ``` 这样,就可以使用`python3`命令了。 但是,请注意,SCL安装Python默认不在PATH中,所以通过scl enable才能使用。 因此,我们更推荐使用以下方法使用SCL安装Python: - 在需要时使用`scl enable rh-python38 'command'`来运行命令 - 或者进入一个启用了该软件集的bash会话 另外,如果用户希望系统默认使用Python3.8,可以考虑使用`alternatives`系统来设置,但这可能会影响系统工具,所以不推荐。 总结:用户可以选择安装EPEL提供的python38(如果可用)或者SCL提供的rh-python38。安装后,如果是SCL安装,则需要通过scl命令启用。 因此,我们给出两种安装方式的命令: 方式A(使用EPEL安装): sudo yum install epel-release sudo yum install python38 方式B(使用SCL安装): sudo yum install centos-release-scl sudo yum install rh-python38 然后,对于方式B,使用`scl enable rh-python38 bash`来启用。 最后,验证安装python3.8 --version 注意:在方式A中,安装后可以直接使用`python3.8`命令(如果安装成功的话)。 因此,我们建议用户先尝试方式A,如果方式A无法安装(即提示找不到包),则使用方式B。 另外,引用[3]中提到了安装大量的开发库,这些库在安装Python3后,对于使用pip安装某些需要编译的Python包(如加密库、数据库驱动等)是必要的,所以建议提前安装。 所以,完整的步骤: 1. (可选)配置阿里云yum源 2. 安装开发工具和依赖库(引用[3]中的包) 3. 安装EPEL仓库 4. 尝试安装python38(如果成功,则完成) 5. 如果不成功,则安装SCL仓库和rh-python38 命令总结: ```bash # 1. 配置阿里云yum源(可选) sudo mv /etc/yum.repos.d /etc/yum.repos.d.backup sudo mkdir /etc/yum.repos.d sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sudo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo sudo yum clean all sudo yum makecache # 2. 安装开发工具和依赖库 sudo yum groupinstall -y "Development Tools" sudo yum install -y gcc patch libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel # 3. 安装EPEL(如果第一步已经配置阿里云的epel源,则已经安装,这里再执行一次也无妨) sudo yum install -y epel-release # 4. 尝试安装python38 sudo yum install -y python38 # 如果第4步成功,则结束;否则,继续 # 5. 安装SCL仓库 sudo yum install -y centos-release-scl # 6. 安装rh-python38 sudo yum install -y rh-python38 # 7. 验证安装(对于SCL安装,需要先启用环境) scl enable rh-python38 "python3.8 --version" ``` 注意:第4步如果成功,则第5-7步不需要执行。 最后,用户可以根据需要选择是否将SCL环境持久化(如添加到.bashrc中)。 以上就是在CentOS7上使用yum安装Python3.8的完整步骤。 注意:由于不同时间仓库的可用性不同,如果用户需要其他版本的Python,可以相应调整包名。 例如,在EPEL仓库中,可能只有python36,那么可以安装python36。或者,在SCL中,除了rh-python38,还有rh-python36等。 因此,用户可以根据需要选择合适的版本。 现在,我们生成相关问题。</think>### 在 CentOS 7 中使用 yum 安装 Python 3 的完整指南 #### 步骤 1:安装必备开发工具和依赖库 首先安装编译环境和基础依赖库(这是成功安装 Python 3 的关键): ```bash sudo yum groupinstall "Development Tools" -y sudo yum install -y gcc zlib-devel bzip2-devel openssl-devel \ ncurses-devel sqlite-devel readline-devel tk-devel \ libffi-devel xz-devel wget ``` 这些工具和库是编译 Python 源码的基础依赖[^1][^3]。 #### 步骤 2:添加 EPEL 仓库(提供 Python 3) CentOS 7 默认仓库不包含 Python 3,需添加 EPEL 仓库: ```bash sudo yum install epel-release -y sudo yum update -y ``` #### 步骤 3:安装 Python 3 根据需求选择安装方式: **方式一:安装 Python 3.6(推荐稳定版)** ```bash sudo yum install python36 python36-devel -y ``` **方式二:安装 Python 3.8(需添加 SCL 仓库)** ```bash sudo yum install centos-release-scl -y sudo yum install rh-python38 rh-python38-python-devel -y # 启用 Python 3.8 scl enable rh-python38 bash ``` #### 步骤 4:验证安装 ```bash python3 --version # 或对于 SCL 安装 python3.8 --version ``` 应显示类似 `Python 3.6.8` 或 `Python 3.8.13` 的版本信息。 #### 步骤 5:设置默认 Python 3(可选) ```bash sudo alternatives --set python /usr/bin/python3 ``` ⚠️ 警告:不要替换系统自带的 Python 2.7,否则可能导致 yum 等系统工具失效。 #### 常见问题解决 1. **`No package python3 available` 错误** 确保已正确安装 EPEL 仓库: ```bash sudo yum repolist | grep epel ``` 2. **SSL 模块缺失** 安装时需确保 openssl-devel 已安装: ```bash sudo yum reinstall openssl-devel -y ``` 3. **pip 工具安装** ```bash sudo yum install python3-pip -y pip3 install --upgrade pip ``` #### 配置建议 - 使用 `virtualenv` 创建隔离环境: ```bash pip3 install virtualenv virtualenv myenv --python=python3.8 source myenv/bin/activate ``` - 国内用户可配置 pip 阿里云镜像加速: ```bash pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ ``` > 关键提示:CentOS 7 默认依赖 Python 2.7安装 Python 3 时不要删除或替换系统自带的 `/usr/bin/python` 和 `/usr/bin/yum` 文件[^1][^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值