centos 7 升级Python3.8
思韵闪耀
2022-02-26
0

1.下载官方Python包
使用wget下载Python-3.8.2包

wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tar.xz

2.解压Python-3.8.2
tar.xz压缩格式,需要用xz命令解压为.tar,用tar命令解包,目录权限不足时需使用:sudo

xz -d Python-3.8.2.tar.xz
tar xvf Python-3.8.2.tar

另外一种格式

wget --no-check-certificate https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
tar xzvf Python-3.8.2.tgz

3.Python-3.8.2安装到指定目录
编译安装时不要使用“make && make install”
一定要分两步,先make(编译),然后再 make install(编译安装)。
非root用户需使用sudo

1. 创建安装目录

mkdir /usr/local/python3/

2. 指定安装目录
不要在./configure 后添加–enable-optimizations参数,在低版本的gcc版本中带有–enable-optimizations参数时会出现“Could not import runpy module”安装错误,在下面会介绍

# 进入Python-3.8.2目录

cd Python-3.8.2
# 配置(指定安装目录)

./configure --prefix=/usr/local/python3

3. 编译

make

4. 编译安装

make install

5. 更换系统默认Python版本
(1).备份原系统旧版本python

mv /usr/bin/python /usr/bin/python.bak
mv /usr/bin/pip /usr/bin/pip.bak

(2).配置环境变量:创建新版本Python和pip的软链接

ln -s /usr/local/python3/bin/python3.8 /usr/bin/python
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

5. 查看版本

python -V

6. 修改因更换Python版本影响的其它命令功能

(1).yum
vim /usr/bin/yum
把最顶部的#!/usr/bin/python改为:#!/usr/bin/python2.7
wq 保存,已经是的无须更改

(2).urlgrabber-ext-down
vim /usr/libexec/urlgrabber-ext-down
把最顶部的#!/usr/bin/python改为:#!/usr/bin/python2.7
wq 保存,已经是的无须更改

(3).firewalld
vim /usr/sbin/firewalld
把最顶部的#!/usr/bin/python改为:#!/usr/bin/python2.7
wq 保存,已经是的无须更改

(4).firewall-cm
vim /usr/bin/firewall-cm
把最顶部的#!/usr/bin/python改为:#!/usr/bin/python2.7
wq 保存,已经是的无须更改

7. 出现Could not import runpy module“”安装错误说明
错误示例:

make build_all CFLAGS_NODIST=" -fprofile-use -fprofile-correction" LDFLAGS_NODIST=""
make[1]: Entering directory `/usr/local/src/Python-3.8.0'
./python -E -S -m sysconfig --generate-posix-vars ;\
if test $? -ne 0 ; then \
echo "generate-posix-vars failed" ; \
rm -f ./pybuilddir.txt ; \
exit 1 ; \
fi
Could not import runpy module
Traceback (most recent call last):
File "/usr/local/src/Python-3.8.0/Lib/runpy.py", line 15, in <module>
import importlib.util
File "/usr/local/src/Python-3.8.0/Lib/importlib/util.py", line 14, in <module>
from contextlib import contextmanager
File "/usr/local/src/Python-3.8.0/Lib/contextlib.py", line 4, in <module>
import _collections_abc
SystemError: <built-in function compile> returned NULL without setting an error
generate-posix-vars failed
make[1]: *** [pybuilddir.txt] Error 1
make[1]: Leaving directory `/usr/local/src/Python-3.8.0'
make: *** [profile-opt] Error 2

导致原因:
在低版本的gcc中带有–enable-optimizations参数
解决方法(不推荐使用方法1):
1、升级gcc至高版本,gcc 8.1.0已修复此问题
2、./configure参数中去掉–enable-optimizations


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

OSI

相关内容

解决Please make...
解决Please make sure you have the c...
2025-03-17
This system i...
This system is not registered wit...
2022-04-28
SQL Server常用升...
一、选择SQL Server升级方法 升级SQL Server的方...
2022-04-27
SMTP 发送邮件错误码和...
SMTP错误码/建议解决方法 错误总表 420 1. Timeou...
2022-03-03
docker images...
命令:docker images Usage: docker im...
2022-02-27
Docker images...
docker images : 列出本地镜像。 语法 docker...
2022-02-27

热门资讯

SIOCADDRT: Netw... SIOCADDRT: Network is unreachable SIOCADDRT: 网络不可达...
centos7下创建新用户和组 linux下添加,删除,修改,查看用户和用户组 1 .增加一个test组 groupadd test...
linux通过sed 修改文件... 13sy.txt里面内容如下 A; B; C; write by luohao199621; 1.要...
关于cannot remove... 关于cannot remove directory: Directory not empty的解决办...
mount: unknown ... mount: unknown filesystem type LVM2_member解决方案 系统启...
OpenMediaVault安... OpenMediaVault 是一个基于Debian的专用 Linux 发行版,用于构建网络连接存储...
centos7 双网卡双网关的... 最近公司需要在一台服务器上同时使用内网和外网,并且都需要跨网段访问,因此需要双网关,但是一台机子上只...
ethtool 命令详解 1 概述 ethtool 是用于查询及设置网卡参数的命令。 2 命令详解 2.1 命令格式 (1) ...
CentOS7单网卡设置双IP... linux系统CentOS7单网卡设置双IP的方法,centos7.5、7.6、7.7设置双IP教程...
Linux进程状态D,S,Z的... Linux进程状态top,ps中看到进程状态D,S,Z的含义 在top和ps命令中有一列显示进程状态...