python内置的urllib模块不支持https协议的解决办法

转自:https://blog.csdn.net/qq_21334991/article/details/78621696

  代码:
    import urllib
    urllib.urlopen('http://www.baidu.com')

  出错:    
    <addinfourl at 269231456 whose fp = <socket._fileobject object at 0xff98250>>
     urllib.urlopen('https://www.baidu.com')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/python27/lib/python2.7/urllib.py", line 86, in urlopen
        return opener.open(url)
      File "/usr/local/python27/lib/python2.7/urllib.py", line 204, in open
        return self.open_unknown(fullurl, data)
      File "/usr/local/python27/lib/python2.7/urllib.py", line 216, in open_unknown
        raise IOError, ('url error', 'unknown url type', type)
    IOError: [Errno url error] unknown url type: 'https'

之所以python内置的urllib模块不支持https协议是因为编译安装python之前没有编译安装类似于openssl这样的SSL库,以至于python不支持SSL

Centos系统所以安装openssl-devel
sudo yum install openssl-devel

之后重新编译Python
./configure(可选,因为之前已经配置过,按之前的配置来就行了,而且最好按之前的配置配编译安装以免依赖的库需要重新编译安装。)

make
make install
import urllib
urllib.urlopen('https://www.baidu.com')

没有再报同样的错误。

猜你喜欢

转载自blog.csdn.net/qq_31279347/article/details/82818830
今日推荐