编译安装完Python3之后,使用pip来安装python库,发现了如下报错:

$ pip install numpy

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Collecting numpy

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/numpy/

Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/numpy/

Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/numpy/

Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/numpy/

Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/numpy/

Could not fetch URL https://pypi.python.org/simple/numpy/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/numpy/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)) - skipping

Could not find a version that satisfies the requirement numpy (from versions: )

No matching distribution found for numpy

网上说了一种解决方案,是在./configure 的时候,加上--with-ssl选项,然后重新编译安装,尝试了下:

$ ./configure --with-ssl

... ...

configure: WARNING: unrecognized options: --with-ssl

... ...

出了个警告:不可识别的--with-ssl选项。

./configure --help看了下确实也没发现这个选项,估计是版本不一致,不大想折腾这个版本问题了,决定换个思路。

尝试安装openssl:

$ sudo yum install openssl

安装成功之后,重新编译安装,依旧报这个错,但是在make的时候有了一些发现:

$ make

... ...

Python build finished successfully!

The necessary bits to build these optional modules were not found:

_bz2 _curses _curses_panel

_dbm _gdbm _lzma

_sqlite3 _ssl _tkinter

readline

To find the necessary bits, look in setup.py in detect_modules() for the module's name.

可以看到,这里虽然make成功了,但是报了很多模块缺失,查看下编译安装目录下的setup.py,搜索_ssl,可以定位到如下代码:

843 # Detect SSL support for the socket module (via _ssl)

844 search_for_ssl_incs_in = [

845 '/usr/local/ssl/include',

846 '/usr/contrib/ssl/include/'

847 ]

848 ssl_incs = find_file('openssl/ssl.h', inc_dirs,

849 search_for_ssl_incs_in

850 )

851 if ssl_incs is not None:

852 krb5_h = find_file('krb5.h', inc_dirs,

853 ['/usr/kerberos/include'])

854 if krb5_h:

855 ssl_incs += krb5_h

856 ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,

857 ['/usr/local/ssl/lib',

858 '/usr/contrib/ssl/lib/'

859 ] )

860

861 if (ssl_incs is not None and

862 ssl_libs is not None):

863 exts.append( Extension('_ssl', ['_ssl.c'],

864 include_dirs = ssl_incs,

865 library_dirs = ssl_libs,

866 libraries = ['ssl', 'crypto'],

867 depends = ['socketmodule.h']), )

868 else:

869 missing.append('_ssl')

可以看到,setup.py会在'/usr/local/ssl/include', '/usr/contrib/ssl/include/' 这两个目录里面搜索'openssl/ssl.h' 这个头文件,然后会在 '/usr/local/ssl/lib' 和 '/usr/contrib/ssl/lib/' 之中搜索 ssl 的 lib文件,搜索不到,会将_ssl加入missing这个数组里面,然后寻找missing调用的地方:

313 if missing:

314 print()

315 print("Python build finished successfully!")

316 print("The necessary bits to build these optional modules were not "

317 "found:")

318 print_three_column(missing)

319 print("To find the necessary bits, look in setup.py in"

320 " detect_modules() for the module's name.")

321 print()

找到了上面报错时候的输出,很明显,是由于搜索不到ssl.h头文件或者搜索不到lib文件而导致的报错,但是我刚刚明明是装了openssl的啊,为啥还会报找不到呢?手动搜索下:

$ sudo find / -name ssl.h

没找到ssl.h,折腾了一番之后,找到了如下命令:

$ sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

可以看到,这个命令安装的是openssl-devel,与我之前安装的openssl有所不同,查阅资料之后发现,openssl只包含了可执行部分,openssl-devel才包含了头文件、头文件参考、某些库文件等跟开发相关的东西。所以只安装openssl是找不到相应的头文件的,安装完之后,再次编译:

$ make clean

$ make

... ...

Python build finished successfully!

The necessary bits to build these optional modules were not found:

_dbm _gdbm _lzma

To find the necessary bits, look in setup.py in detect_modules() for the module's name.

果然发现,缺失的模块少了很多。

继续安装:

$ sudo make install

安装完之后,重新执行pip:

$ pip install numpy

Collecting numpy

Downloading https://files.pythonhosted.org/packages/68/1e/116ad560de97694e2d0c1843a7a0075cc9f49e922454d32f49a80eb6f1f2/numpy-1.14.5-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)

6% |██ | 747kB 10kB/s eta 0:17:52

至此,pip安装报错的问题解决。

https://www.cnblogs.com/minglee/p/9232673.html

python ssl模块_转 Python3 ssl模块不可用的问题相关推荐

  1. python gps模块_树莓派连接GPS模块

    一月份的时候觉得好玩买了树莓派,但是太懒没怎么研究,但最近当初买树莓派时的那个梦想又萦绕心头,决定抽空完成一下当年的计划~ GPS模块是其中很重要的一环,于是在某宝上搜索,找了一家相对便宜也很轻巧的G ...

  2. python鼠标位置_用python3 返回鼠标位置的实现方法(带界面)

    点击获取后,返回2s后的鼠标位置,显示在文本框 (需要用pip命令安装所需的的库) (pip install 模块名 比如 安装pyautogui 模块 在cmd里面输入: pip install p ...

  3. java9 模块_了解Java 9模块

    java9 模块 Java 9的主要创新是引入了模块. 关于此功能的讨论很多,发布日期被推迟了几次以正确完成所有操作. 今天,我们将讨论模块的机制,以及Java 9总体带来的好处. 该帖子基于Inte ...

  4. python 解析域名_三、域名解析模块(dnspython)

    一.域名解析模块(dnspython) dnspython模块提供了大量的DNS处理方法,最常用的方法是域名查询.dnspython提供了一个DNS解析器类--resolver,使用它的query方法 ...

  5. imooc的疯狂的蚂蚁的课程《Python操作MySQL数据库》 python3+pymysql模块来操作mysql数据库

    以下代码为imooc的疯狂的蚂蚁的课程<Python操作MySQL数据库>的python3版本的代码,使用的是pymysql模块来操作mysql数据库,代码与原课程有所改动,注意运行时需要 ...

  6. python数值模拟教程_数值模拟必备random模块

    该模块实现了各种分布的伪随机数生成器.可以在区间内抽取一个随机数,可以在列表中抽取一个元素,可以从分布中抽取样本 . random模块不能直接访问,需要导入 random 模块,然后通过 random ...

  7. 十个模块_专栏 | ABAQUS Part模块的十个小技巧

    作者介绍 星辰_北极星 2012年开始从事Abaqus仿真相关工作,服务大小课题逾百项; 主要仿真领域:石油工程.岩土工程和金属加工工艺: 重点研究方向:ABAQUS GUI二次开发.固体力学.断裂以 ...

  8. python封装介绍_谈python3的封装

    这章给大家介绍,如何封装一个简单的python库 首先创建一个以下型式的文件结构 rootFile/setup.py example_package/ __init__.py example_modu ...

  9. python实现天气预报_【Python3爬虫】用Python实现发送天气预报邮件

    此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱. 一.爬取天气预报 1.首先是爬取天气预报的信息,用的网站是中国天气网,网址是http://www.weather.c ...

最新文章

  1. C/C++编程的一些技巧
  2. 关于JS阶乘,首字母大写,最长单词计算,重复说话次数等简单基础算法练习...
  3. BUU_刷题之旅(One)
  4. kafka通过零拷贝实现高效的数据传输
  5. 智能家居 (1) ——智能家居整体功能框架
  6. 如何c51和mdk共存兼容_2020年网站如何做seo优化
  7. 《转》完美解决微信video视频隐藏控件和内联播放问题
  8. 手机便携版_智能体验醇音随行 哈曼卡顿音乐琥珀便携版评测
  9. python基础7--socket
  10. HTTP协议的工作原理
  11. android多个点的圆形进度条,Android 自定义圆形进度条总结
  12. 数电实验(二)利用8选1数据选择器74LS151设计四舍五入判别电路
  13. JSON 对比工具,优秀的JSON对比工具,对比json数据
  14. GO语言+区块链视频教程,GO语言+区块链学习线路图(含大纲+视频+资料)
  15. 仿b站Java_推荐 9 个 GitHub 上练手项目(在线考试、仿美团、仿抖音、仿B站、仿头条...)...
  16. blog放在 http://cunsh.ycool.com/
  17. Go语言学习系列 -- 大道至简—GO语言最佳实践​​​​​​​
  18. WannaCry爆发一年后,EternalBlue的威胁仍然存在
  19. Android WebView 视频播放,全屏按钮不显示或灰显解决方案
  20. 七倍压电路图_倍压整流电路图大全(九款倍压整流电路设计原理图详解) - 全文...

热门文章

  1. Git学习总结(22)——Git 常用操作再总结
  2. Oracle学习总结(3)——Navicat客户端连接Oracle数据库常见问题汇总
  3. 代码管理和检查平台汇总
  4. 使用计算机计算一个多边形,多边形面积计算器
  5. git 创建webpack项目_从 0 开始构建 webpack 项目【Webpack Book 翻译】
  6. sql 没数据补零_SQL 小白入门小课堂
  7. Mysql存时间不一致_node mysql 存在数据库中的时间和取到前端的时间不一致,请问怎么解决...
  8. Office 365有个AI「工作场所分析」掌握组织人力资源
  9. SSH框架和Redis的整合(1)
  10. 【Away3D代码解读】(一):主要类及说明