栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python - ImportError: No module named ‘

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python - ImportError: No module named ‘

问题背景

操作系统Centos7.7,内核版本 3.10.0-1062
安装python3.6成功后,在python脚本中import ssl标准库报错:

>>> import ssl
Traceback (most recent call last):
  File "", line 1, in 
  File "/home/PythonDir/lib/ssl.py", line 98, in 
    import _ssl             # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'
>>>

检查python安装过程中的信息,通过搜索“_ssl”关键字发现有failed:

问题分析

在python源码的setup.py文件,搜索到错误提示抛出位于方法check_extension_import中:

查看调用位置位于build_extensions()方法中:

上图脚本中self.extensions变量值来自该方法中的如下两处:

猜测openssl版本可能不对,但查看系统openssl版本符合要求。
根据以上追踪,猜测原因1:ssl在disableed_module_list中或使用了缓存配置不编译_ssl;
猜测原因2:外网有人反映将python3安编译装到usr/local之外的地方会导致该ssl模块安装失败,该机制尚不清楚,需要进一步排查。

解决方法 针对原因1

Setp1,确认openssl版本:

[root@node]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

Step2,最好使用从python3.6.x.tar.gz新解压的包,这样python源码里面不会存留有build缓存文件;
python3 默认使用在Modules/Setup文件中配置的SSL路径:

将默认配置解除注释:

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c 
   -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl 
   -L$(SSL)/lib -lssl -lcrypto

如果该路径没有安装ssl工具,请自行安装openssl, openssl-dev
yum install openssl
yum install openssl-devel -y
安装完成后再次使用命令openssl version查看openssl版本以确认安装成功。

Step3,重新安装python,命令行依次执行:

./configure --prefix=/usr/local/python3
make && make install
针对原因2

编译脚本代码量较大,机制尚未完全搞清楚需要些时间,经过在不同操作系统尝试,python3安编译装到usr/local之外的地方也能成功,编译安装过程中使用到了usr/bin,usr/local的资源,要确保环境变量path包括这些路径。

参考资料

[1]. https://blog.csdn.net/qq_42346414/article/details/90649217?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.pc_relevant_aa&spm=1001.2101.3001.4242.1&utm_relevant_index=3
[2]. https://stackoverflow.com/questions/5937337/building-python-with-ssl-support-in-non-standard-location

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739182.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号