转载https://www.jianshu.com/p/ace9be0b08ed

公司运维提供的服务器是centos6.8,打算在上面装python3.7,结果费尽周折,按照网上的步骤python3.7能成功安装,但是import ssl却报找不到_ssl模块的错误:

import _ssl             # if we can't import it, let the error propagate
ImportError: No module named _ssl

在网上搜了各种方法,有说修改python3.7安装文件中的Setup.dist,将SSL部分注释掉,但自己注释掉仍然不行。有说重新装openssl库,配置python3.7的时候指定openssl,然而也是不行。反正网上各种博客说的方法都不万能,在我这都不行。之前安装的时候只是把安装步骤的linux命令敲一遍,也不明白是什么意思,为了彻底找出原因所在,自己反复折腾了2天,每条命令、每个参数选项都去搞明白到底是啥意思,最终终于把ssl这个模块搞定了,下面就把centos6.8安装python3.7的正确步骤写下。另,如果没有特殊要求,直接装python3.6就行,python3.6在centos6.8下傻瓜式安装就不会有此问题。
言归正传,安装步骤如下:
1、安装依赖库:

yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++

注意,这里yum源安装的openssl的最高版本是1.0.1:

[root@4ed99ab56fea /]# rpm -qa | grep openssl
openssl-1.0.1e-57.el6.x86_64
openssl-devel-1.0.1e-57.el6.x86_64

但是python3.7安装要求openssl最低版本是1.0.2,所以不能用yum安装的openssl,需要额外下载1.0.2的openssl来安装。

2、安装1.0.2版本的openssl

  • 下载1.0.2版本的openssl
wget http://www.openssl.org/source/openssl-1.0.2j.tar.gz
  • 解压openssl源代码,并安装
tar -zxvf openssl-1.0.2j.tar.gz
./config --prefix=$HOME/openssl shared zlib
make && make install

注意!openssl配置是用config,而不是configure,另外openssl编译安装依赖zlib动态库,所以一定要shared zlib。

3、设置环境变量LD_LIBRARY_PATH

echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openssl/lib" >> $HOME/.bash_profile
source $HOME/.bash_profile

这一步一定要有!!LD_LIBRARY_PATH环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。当执行函数动态链接.so时,如果此文件不在缺省目录下‘/lib’ and ‘/usr/lib’,那么就需要指定环境变量LD_LIBRARY_PATH

4、下载并解压python3.7,并安装,一定要指定刚才安装的1.0.2版本的openssl!!!

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar -zxvf Python-3.7.0.tgz
./configure --prefix=$HOME/Py37 --with-openssl=$HOME/openssl
make && make install

ok,至此python3.7就安装完了,来检验下ssl模块能否被导入吧:

[root@4ed99ab56fea bin]# ./python3
Python 3.7.0 (default, Sep 16 2018, 14:12:43)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> import _ssl
>>>

至此ok了!折腾了近2天,终于搞定了。

作者:Ivanli1990
链接:https://www.jianshu.com/p/ace9be0b08ed
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

centos6.8安装python3.7无法import _ssl的更多相关文章

  1. centos6.9安装python3.6.9独立的virtualenv环境,并且能正确引入ssl

    centos6.9安装python3.6.9独立的virtualenv环境,并且能正确引入ssl 1.编译安装python3.6环境# 安装依赖yum -y install zlib-devel bz ...

  2. Centos6.5 安装 python3.5 虚拟环境 virtualenvwrapper

    Centos6.5 安装 python3.5 虚拟环境 virtualenvwrapper 1 . 安装 python3.5 下载:https://www.python.org/ https://ww ...

  3. 第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1

    第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1 1.检查系统是否安装了python [root@192 ~]# rpm -qa ...

  4. Centos6.6安装Python3.5笔录

    1.CentOS6.6 安装Python3.5 的依赖包 yum groupinstall "Development tools" yum install zlib-devel b ...

  5. centOS6.4安装python3.5,并且安装pip

    前言: 如果你也是用的centos系统,打算装python3.0以上版本,再装python下载工具pip,那么恭喜你,你可能也会像我一样遇到各种各样的问题! 另外非常重要的一点:centos都会自带p ...

  6. centos6.5 安装python3.5

    1.CentOS6.5 安装Python 的依赖包 yum groupinstall "Development tools" yum install zlib-devel bzip ...

  7. Centos6.8安装python3.6

    1.目的简介: centos默认使用的是python 2.6.6,而python的2.x 和 3.x 是两个不兼容的版本,到目前的python发展,都已经过渡到了python 3.x,所以需要手动将p ...

  8. centos6.8安装python3.7.3报错Can't connect to HTTPS URL because the SSL module is not available问题解决

    环境:CentOS release 6.8 (Final) # 直接编译python3.7在使用pip3安装依赖的时候报错: Can't connect to HTTPS URL because th ...

  9. Python学习笔记之Centos6.9安装Python3.6

    0x00 注意 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环 ...

随机推荐

  1. 第二十二节,TensorFlow中RNN实现一些其它知识补充

    一 初始化RNN 上一节中介绍了 通过cell类构建RNN的函数,其中有一个参数initial_state,即cell初始状态参数,TensorFlow中封装了对其初始化的方法. 1.初始化为0 对于 ...

  2. mysql中使用存储过程方法中的注意事项

    public function getFxOrderList($openId,$condition='',$curentPage=1,$pagesize =10){ return $this-> ...

  3. (线段判交的一些注意。。。)nyoj 1016-德莱联盟

    1016-德莱联盟 内存限制:64MB 时间限制:1000ms 特判: No通过数:9 提交数:9 难度:1 题目描述: 欢迎来到德莱联盟.... 德莱文... 德莱文在逃跑,卡兹克在追.... 我们 ...

  4. (栈 注意格式)P1739 表达式括号匹配 洛谷

    题目描述 假设一个表达式有英文字母(小写).运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”:否则返 ...

  5. Centos 6.8编译安装LNMP环境

    Centos 6.8编译安装LNMP环境 参考资料: http://www.jb51.net/article/107429.htm https://phperzh.com/articles/1360 ...

  6. Elastic Stack之ElasticSearch分布式集群二进制方式部署

    Elastic Stack之ElasticSearch分布式集群二进制方式部署 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 想必大家都知道ELK其实就是Elasticsearc ...

  7. go build 和 go run区别

  8. SpringMvc+jQuery 文件拖拽上传、选择上传

    最近做了个简易的基于boostrap的文件上传功能,jsp版本的,后续会完善更多的功能,不过现在已经能用了,需要的小伙伴,直接引用下面的文件内容直接copy到自己的项目中就ok了,效果如图: file ...

  9. Dubbo服务的运行方式

    1.使用Servlet容器运行(Tomcat.Jetty)等 ---不可取 缺点:增加复杂性(端口,管理) 浪费资源(内存) 2.自建Main方法类来运行(Spring容器) ---不建议(本地调试可 ...

  10. Web API中的内容协商

    一.内容协商的概念 HTTP规范将内容协商定义为“当有多个格式可用时为给定响应选择最佳格式的过程”.HTTP中内容协商的主要机制是这些请求标头: Accept:响应可接受哪些媒体类型,例如“appli ...