Django站點使用django_cas接入SSO(單點登陸系統),配置完成後登陸,拋出「urlopen error unknown url type: https」異常。尋根朔源發現是python內置的urllib模塊不支持https協議。python
>>> 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'linux
之因此python內置的urllib模塊不支持https協議是由於編譯安裝python以前沒有編譯安裝相似於openssl這樣的SSL庫,以致於python不支持SSL算法
由於我用的是CentOS系統因此安裝openssl-devel
sudo yum install openssl-develdjango
以後從新編譯Python
./configure(可選,由於以前已經配置過,按以前的配置來就好了,並且最好按以前的配置配編譯安裝以避免依賴的庫須要從新編譯安裝。)
make
make install編程
>>> import urllib
>>> urllib.urlopen('https://www.baidu.com')python2.7
沒有再報一樣的錯誤。socket
在安裝完openssl-devel後從新編譯python前也有說須要編輯Modules文件夾內Setup.dist文件的
修改
# 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
爲
# 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庫編譯進python中。url
另外須要特別注意的是,從新編譯安裝python後,經過可執行文件名(多是個鏈接文件)運行python可能運行的仍是老的python,這是由於可執行文件名沒有鏈接到新的python可執行程序。所以要用最新的python可執行文件名或指向該名字的鏈接來運行python。視頻
從新編譯安裝python後有可能致使須要從新編譯django,MySQLdb,pycrypto,python-ldap,django-auth-ldap,django_cas,django_cas,pymongo等一些列依賴python的模塊。這裏要特別注意
Python向PHP發起GET與POST請求 http://www.linuxidc.com/Linux/2014-10/107903.htm
《Python核心編程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm
《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm
Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm
在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm
Python 語言的發展簡史 http://www.linuxidc.com/Linux/2014-09/107206.htm