zoukankan      html  css  js  c++  java
  • centos6.8安装python3.7无法import _ssl

    转载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
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    java.lang.NoSuchMethodError
    asm相关内容想下载(包括 jar 包)
    Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    用Navicat连接mysql报错:2003-Can't connect to MySql server on '10.100.0.109'(10039)
    The type java.lang.reflect.AnnotatedElement cannot be resolved. It is indirectly referenced from required .class files
    The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
    交通测速方式
    卡口和电子警察的区别
    Myeclipse连接Mysql数据库时报错:Error while performing database login with the pro driver:unable
    在window上安装mysql
  • 原文地址:https://www.cnblogs.com/saolv/p/9984045.html
Copyright © 2011-2022 走看看