Python3中安裝后SSL問題及解決
Python3安裝后SSL問題
問題
編譯安裝時(shí)已經(jīng)指定了–with-openssl的參數(shù)并且指向了你的openssl的源碼包地址,但是編譯安裝之后ssl還是沒有辦法用。
解決
根據(jù)網(wǎng)上的文章介紹,要進(jìn)入到python源碼包解壓后的那個(gè)目錄下的Modules/Setup,注意Setup這個(gè)文件,只有在python完成安裝后才會(huì)生成這個(gè)文件。
并且按照如下圖去除注釋:
可以看到SSL的路徑為/usr/local/ssl,所以如果你看到自己的服務(wù)器上面沒有這個(gè)路徑,那么你就沒有安裝ssl相關(guān)的東西,或者說你的ssl相關(guān)的目錄名不叫ssl。
那么你更改ssl的路徑為你的ssl安裝目錄也可以,或者說你安裝ssl的時(shí)候使用這個(gè)目錄名為安裝目錄。
還有,可以使用libressl來代替openssl,我這次問題就是安裝的libressl來解決的問題,我將libresll安裝到了/usr/local/ssl這里,并且將上面的注釋去除,然后重新make install,問題就解決啦!
注意python3在編譯安裝的時(shí)候提示了,ssl需要用openssl1.0.2或者libressl2.64(不含)以后的版本!反正用最新的就好啦!
Python3安裝過程出現(xiàn)的ssl問題
No module named _ssl或者renaming “_ssl“ since importing it failed
如果安裝Python或者運(yùn)行Python的時(shí)候報(bào)了上面的錯(cuò)誤,那么首先你需要確定自己是否安裝了openssl,若安裝了openssl,請(qǐng)確定openssl的安裝位置及l(fā)ib和include被安裝在哪里,另外在/usr/lib64中是否有l(wèi)ibssl.so.1.1和libcrypto.so.1.1等文件,一般而言openssl的lib及include位置為/usr/local/lib64/ 或 /usr/local/lib/ 或 /usr/local/openssl/lib/ 及 /usr/local/include 或 /usr/local/openssl/include
若沒有安裝,請(qǐng)?jiān)?a target="_blank">https://www.openssl.org/source/下載最新版,如下所示
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz tar -zxvf openssl-1.1.1d.tar.gz cd openssl-1.1.1d ./config --prefix=/usr/local --openssldir=/usr/local/openssl make && make install ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
openssl環(huán)境安裝好后,就下載目標(biāo)版本的Python安裝包并解壓了
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz tar -zxvf Python-3.7.6.tgz cd Python-3.7.6
進(jìn)入目錄后很多相關(guān)的教程都會(huì)說要你改下面的文件,但是!!不會(huì)和你說為什么改,只關(guān)顧著說取消注釋就完事了。
vim Modules/Setup.dist 找到SSL相關(guān)配置 #SSL=/usr/local/ssl #_ssl _ssl.c # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl # -L$(SSL)/lib -lssl -lcrypto
我們先把這幾段取消注釋,然后看紅色部分字段,這個(gè)字段即openssl的lib及include所在的目錄,假設(shè)include目錄在/usr/local/下,且路徑/usr/local/include/openssl存在,那么紅色部分字段改為/usr/local(請(qǐng)根據(jù)實(shí)情)
紫色部分字段,即openssl的lib所在的路徑,請(qǐng)確認(rèn)一下該路徑下是否有l(wèi)ibssl.so.1.1之類的,沒有說明找錯(cuò)了。請(qǐng)把紫色部分字段改為lib64(請(qǐng)根據(jù)實(shí)情)
改完后保存wq
例子
SSL=/usr/local _ssl_ssl.c -DUSE_SSL -l$(SSL)/include -l$(SSL)/include/openssl -L$(SSL)/lib64 -lssl -lcrypto
最后編譯看看是不是好了?
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC && make && make install
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 實(shí)現(xiàn)兩個(gè)變量值進(jìn)行交換的n種操作
這篇文章主要介紹了python 實(shí)現(xiàn)兩個(gè)變量值進(jìn)行交換的n種操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06python生成多個(gè)只含0,1元素的隨機(jī)數(shù)組或列表的實(shí)例
今天小編就為大家分享一篇python生成多個(gè)只含0,1元素的隨機(jī)數(shù)組或列表的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11python如何實(shí)現(xiàn)不用裝飾器實(shí)現(xiàn)登陸器小程序
這篇文章主要介紹了python如何實(shí)現(xiàn)不用裝飾器實(shí)現(xiàn)登陸器小程序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python+Appium實(shí)現(xiàn)自動(dòng)化清理微信僵尸好友的方法
這篇文章主要介紹了Python+Appium實(shí)現(xiàn)自動(dòng)化清理微信僵尸好友的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02解決Python設(shè)置函數(shù)調(diào)用超時(shí),進(jìn)程卡住的問題
今天小編就為大家分享一篇解決Python設(shè)置函數(shù)調(diào)用超時(shí),進(jìn)程卡住的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08python 實(shí)現(xiàn)對(duì)文件夾中的圖像連續(xù)重命名方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)對(duì)文件夾中的圖像連續(xù)重命名方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10