安装问题
python3.10 要求 openssl1.1 ,所以一般源码正常安装完后,也是有部分功能异常的,比如 requests,urllib,以及 pip 安装模块,基本上都是提示 ssl 存在问题,例如 pip 是如下错误:
Could not fetch URL https://pypi.org/simple/xxx/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/xxx/ (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:997)'))) - skipping
如何解决
解决这个问题查询了很多资料,中途还有设置很多的环境变量之类,最后这里使用一个最简单的安装办法来解决这个问题:
- 准备操作系统,不符合 openssl1.1 的需求
- 准备 openssl1.1 的最新包,在 openssl 官方网站下载,20240520 首页最新最低只有3.0了,所以从归档下载吧
- 安装 openssl ,如下步骤
#./config --prefix=/usr/local/openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl -Wl,-rpath,/usr/local/openssl/lib shared zlib
make && make install
- 把 openssl 库文件加载到系统中
echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf.d/ssl.conf && ldconfig -pv
ldconfig
然后可以通过 ldconfig -pv | grep ssl
查看到是否存在 ssl1.1 的版本
5. 安装 python3.10
./configure --prefix=/usr/local/python3.10 --with-openssl=/usr/local/openssl
make && make install
通过这样安装之后,基本上在后续的使用都不会存在ssl的问题
错误之一
20240525 python3错误一,在安装完成后导入某些模块仍然可能报如下错误:
ModuleNotFoundError: No module named '_ctypes'
这是因为系统依赖不完整导致,一般使用 centos 不会出现这个问题,而 ubuntu 等出现的概率较大
需要安装以下依赖,然后重新编译安装 python3
# centos
yum install libffi-devel -y
# ubuntu
sudo apt-get install libffi-dev
评论