指定目录编译安装Python3

1|0编译安装Python3.10

CentOS中自带的Python版本是2,有其他原因需要在系统中安装Python3,但是最好不影响系统自带的版本。可以选用编译安装到指定目录方式实现

1|1安装依赖包

yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

1|2下载安装包

# 利用国内淘宝的加速镜像下载源码包 wget https://npm.taobao.org/mirrors/python/3.10.1/Python-3.10.1.tgz

1|3开始编译安装

tar zxf Python-3.10.1.tgz cd Python-3.10.1 # 预编译 并指定安装目录 ./configure --prefix=/opt/python3 --enable-optimizations # 编译安装 make && make install

1|4添加到环境变量

ln -sf /opt/python3/bin/python3 /usr/local/bin/python3 ln -sf /opt/python3/bin/pip3 /usr/local/bin/pip3

2|0问题修复

编译安装完成之后,出现import ssl报错

img

而且在使用pip安装软件包的时候,也有报错Can't connect to HTTTPS URL because the SSL moduleis not available

这是因为当前系统的OpenSSL太低,需要OpenSSL1.0.2及以上版本(但是这里我自己服务器环境为openssl-1.0.2g也不可以)

2|1编译安装新版本OpenSSL

# 备份老版本的openssl which openssl /usr/bin/openssl mv /usr/bin/openssl /usr/bin/openssl.old rm -rf /etc/ssl/ # 安装新版本openssl wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz tar -zxvf openssl-1.1.1l.tar.gz && cd openssl-1.1.1l ./config --prefix=/usr/local/openssl make && make install ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl cp -r /usr/local/bin/openssl /usr/bin/ echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1l.conf ldconfig -v openssl version -a

2|2重新编译安装Python3

在运行./configure --prefix=/opt/python3后,修改Modules/Setup将SSL的目录改为新安装的OpenSSL目录

vim Modules/Setup # Socket module helper for SSL support; you must comment out the other # socket line above, and edit the OPENSSL variable: _OPENSSL=/usr/local/openssl _ssl _ssl.c \ -I$(OPENSSL)/include -L$(OPENSSL)/lib \ -lssl -lcrypto _hashlib _hashopenssl.c \ -I$(OPENSSL)/include -L$(OPENSSL)/lib \ -lcrypto # To statically link OpenSSL: _ssl _ssl.c \ -I$(OPENSSL)/include -L$(OPENSSL)/lib \ -l:libssl.a -Wl,--exclude-libs,libssl.a \ -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a _hashlib _hashopenssl.c \ -I$(OPENSSL)/include -L$(OPENSSL)/lib \ -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a

再运行make && make install

2|3备份目录,可解压到其他服务器使用

当已经编译安装好的python版本打包,以便可以上传到其他服务器上使用

cd /opt tar zcf python3.10.1.tgz python3 # 将python3.10.1.tgz上传到其他服务器上,解压后做软链就可以使用了 # 如果打包的时候,已经安装了第三方库,那么其他服务器上也可以直接使用安装好的库

__EOF__

本文作者KakuCicada
本文链接https://www.cnblogs.com/KakuCicada/p/15767914.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   KakuCicada  阅读(752)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示