ContOS7.5 python2.7.5 离线升级 python3.7.4

1. 第一步:下载安装包 解压

网址: https://www.python.org/ftp/python/3.3.0/Python-3.7.4.tgz

解压文件
tar -xzvf Python-3.7.4.tgz

2. 第二步:执行安装

2.1 创建存放目录

创建存放目录

mkdir /usr/local/python3  

2.2 运行脚本 configure

在解压的tar目录下执行

./configure

configure功能:检查编译环境/相关库文件/配置参数,生成makefile

configure是一个shell脚本,根据平台的特性生成Makefile文件,为下一步的编译做准备。
可以通过在 configure 后加上参数来对安装进行控制,比如下面就是指定安装目录/usr/local/python3。
如果没有用这个选项,安装过程结束后,该软件所需的软件被复制到不同的系统目录下,比较混乱。

2.2.1 注意:

Traceback (most recent call last):
File "./ImageScan.py", line 3, in <module>
import datetime
File "/usr/local/lib/python3.7/datetime.py", line 8, in <module>
import math as _math
ImportError: /usr/local/lib/python3.7/lib-dynload/math.cpython-37m-x86_64-linux-gnu.so: undefined symbol: PyFloat_Type

如果出现上述错误,请添加参数

./configure --enable-shared

参考:
https://blog.51cto.com/3427850/1077262?source=drt

2.3 make编译make install安装

make && make install

根据makefile制定的规则,将c\c++文件编译成*.o文件,然后进一步生成可执行文件。
make  对源代码进行编译,生成可执行文件
make install 将生成的可执行文件安装到当前计算机中

2.4 最后运行make clean

make clean

删除一些临时文件(删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件)

3. 第三步:创建软连接

查看

python3.7 -V 

ln -s /usr/local/python3/bin/python3.7 /usr/bin/python

4. 总结报错解决

4.1 问题一:configure: error: no acceptable C compiler found in $PATH 问题解决

解决:本地没有gcc,CentOS 7系统离线安装gcc
查看gcc需要的安装包
下载一个CentOS-7-x86_64-DVD-1804-7.5.iso 安装包,然后解压
下载地址看我另外一个博客,应有竟有:
https://blog.csdn.net/lqy971966/article/details/104963908
在这里插入图片描述
汇总后的:
在这里插入图片描述
这里除了libffi-* 和 zlib-*之外的都是gcc需要的包

然后进行安装即可
rpm -Uvh *.rpm --nodeps --force

--nodeps  不验证套件档的相互关联性。
--force  强行置换套件或文件。

验证
gcc -v

https://www.cnblogs.com/qqflying/p/10916564.html
https://blog.csdn.net/White_Black007/article/details/81357234

4.1.1 gcc 和 g++

gcc 为GNU Compiler Collection的缩写,可以编译C和C++源代码等,它是GNU开发的C和C++以及其他很多种语言的编译器
(最早的时候只能编译C,后来很快进化成一个编译多种语言的集合,如Fortran、Pascal、Objective-C、Java、Ada、 Go等。)
gcc 在编译C++源代码的阶段,只能编译C++源文件,而不能自动和C++程序使用的库链接
(编译过程分为编译、链接两个阶段,源程序文件被编译成目标文件,多个目标文件连同库被链接成一个最终的可执行文件,可执行文件被加载到内存中运行)。
因此,通常使用g++命令来完成C++程序的编译和连接,该程序会自动调用 gcc 实现编译。
g++ 也能编译C源代码,只不过把会把它当成C++源代码。
后缀为.c的源文件,gcc把它当作是C程序,
而g++把它当作是c++程序;后缀为.cpp的,两者都会认为是c++程序。注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。

https://blog.csdn.net/zyz511919766/article/details/14002497/

4.1 问题二:安装时报错 ModuleNotFoundError: No module named '_ctypes’的解决办法

解决:安装libffi-devel
找到libffi-*包
在这里插入图片描述

1、执行如下命令:
(在线安装:yum install libffi-devel )

2、从"./configure …"重新安装

https://blog.csdn.net/qq_42353939/article/details/94609591

4.2 问题三:安装时报错 zipimport.ZipImportError: can’t decompress data; zlib not available

解决:缺少了zlib的解压缩类库,安装即可
在这里插入图片描述

(在线安装:yum -y install zlib*)
2、从"./configure …"重新安装
https://blog.csdn.net/blueheart20/article/details/72827666

5. centos7在线升级python2.7到python3.7

#查看当前版本
[root@guangzhou src]# python -V
Python 2.7.5
[root@guangzhou src]# wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
[root@guangzhou src]# tar -zxvf Python-3.7.5.tgz
[root@guangzhou Python-3.7.5]# mkdir /usr/local/python3.7.5
[root@guangzhou Python-3.7.5]# ./configure
[root@guangzhou Python-3.7.5]# make && make install
/* 这里如果中间出错就解决 */
[root@guangzhou bin]# /usr/local/python3.7.5/bin/python3.7 -V
Python 3.7.5
#为不影响已经使用python2.7.5版本安装的软件继续使用,python3.7使用软链
[root@guangzhou bin]# ln -s /usr/local/python3.7.5/bin/python3.7 /usr/bin/python3
[root@guangzhou bin]# ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3
#再次打印3.7版本
[root@guangzhou python3.7.5]# python3 -V
Python 3.7.5

参考:
https://www.cnblogs.com/wscsq789/p/12269274.html

参考

Python2.7升级到Python3.7及其报错处理 在线安装
https://www.cnblogs.com/biaopei/p/12133562.html
https://blog.csdn.net/Aaronxiaobo/article/details/96121771

猜你喜欢

转载自blog.csdn.net/lqy971966/article/details/107616779