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
最后再开始编译和安装。