升级至Python-3.11.1

Python脚本从2.x版本到3.x版本有比较大的更改。为了保证系统的兼容性,原有的Python 2.x脚本环境应予以保留。

首先下载python-3.11.1数据包:

#cd /usr/local/src
......
#wget https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tgz
......

解压缩数据包:

#tar -xvf Python-3.11.1.tgz
......

设置编译环境和选项:

#cd Python-3.11.1
......
#.configure --prefix=/usr/local/python3
......

注意:这里通过设置prefix项目,配置安装目录。

开始编译和安装:

#make
......
#make install
.....

建立软链接:

#ln -s /usr/local/python3/bin/python3 /usr/bin/python3
......
#ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

配置完成之后,此时系统中存在两个python版本:命令python对应的仍是默认2.x版本;命令python3则对应新安装的3.x版本。

# python
Python 2.7.5 (default, Jun 28 2022, 15:30:04)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
# python3
Python 3.11.1 (main, Feb  1 2023, 13:41:47) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

检查软链接:

# python3 -V
Python 3.11.1
# pip3 -V
pip 22.3.1 from /usr/local/python3/lib/python3.11/site-packages/pip (python 3.11)

至此,系统升级至Python-3.11.1。

安装openssl模块

在Python3.10及更高版本中,由于不再支持libressl,需要使用openssl进行编译安装以解决SSL模块导入失败的问题。如果需要安装openssl模块,则需要按照以下操作执行:

在解压Python源代码包之后,需要修改Modules目录下的Setup文件:

…… 
#To statically link OpenSSL: 
_ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \ 
    -l:libssl.a -Wl,--exclude-libs,libssl.a \ 
    -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a 
_hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \ 
    -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a 
……

即,去掉前面的“#”,开启配置项目。

另外,再使用configure设置编译选项:

./configure --prefix=/usr/local/python3 --with-zlib=/usr/include/ --with-openssl-rpath=auto --with-openssl=/usr/include/openssl OPENSSL_LDFLAGS=-L/usr/include/openssl OPENSSL_LIBS=-l/usr/include/openssl/ssl OPENSSL_INCLUDES=-I/usr/include/openssl

最后再开始编译和安装。