centos7.9安装python3.11
linux 7
#确定系统版本
cat /etc/redhat-release

#安装python相关依赖
#这里openssl 部分是强相关的,如果不安装,后续 import ssl 会报错提示找不到 module. 代码中涉及到 https 的部分都无法运行。
yum -y groupinstall "Development tools"
yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
yum install -y openssl-devel openssl11 openssl11-devel

#openssl环境变量
export CFLAGS=$(pkg-config --cflags openssl11)
export LDFLAGS=$(pkg-config --libs openssl11)


#下载python3.11
wget -P /test https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz

#解压&&移动
cd /test
tar xvf Python-3.11.1.tar.xz 
mv Python-3.11.1 /usr/local/python3.11
cd /usr/local/python3.11/


#修改配置文件,vi Modules/Setup,取消以下部分的注释,让Python 在编译时就把 ssl 带上
第147行_socket socketmodule.c
第215行 和 216行_ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) $(OPENSSL_LIBS)
_hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) -lcrypto

#安装&&编译
./configure --prefix=/usr/local/sbin/python3.11 && make && make install


#验证
/usr/local/sbin/python3.11/bin/python3 -V



#移除旧软连接,创建新软连接。此时python 还是对应默认的 Python2.7,我们需要把他切换为 Python3 (还有个 Python-config 没有动,暂时保留)
#查找
ll /usr/bin/ |grep python
ll /usr/bin/ |grep pip
# 删除
rm -rf /usr/bin/python
rm -rf /usr/bin/pip
# 重建
ln -sv /usr/local/sbin/python3.11/bin/python3 /usr/bin/python
ln -s /usr/local/sbin/python3.11/bin/pip3 /usr/bin/pip

#验证
python

#验证Python解释器是否链接到了新版本的OpenSSL
python -c "import ssl; print(ssl.OPENSSL_VERSION)"

#将/usr/bin/yum的顶部的:!/usr/bin/python  改成  !/usr/bin/python2.7 将/usr/libexec/urlgrabber-ext-down的顶部的:/usr/bin/python  改为   /usr/bin/python2.7将/usr/bin/yum-config-manager的顶部的#!/usr/bin/python 改为 #!/usr/bin/python2.7 












centos7.9安装python3.11
https://blog.883051.xyz/archives/an-zhuang-python3
作者
玉溪
发布于
更新于
许可