\
在Cent0S 7.5下將Python 2.7.5升級到Python 3.6.6後,發現ssl模組不可用,具體詳細資訊如下所示:
檢查發現openssl包已經安裝了,然後按照網上的文章,修改Modules/Setup.dist中,找到SSL配置部分,如下截圖所示
[root@db-server ~]# yum list installed |grep openssl\
openssl.x86_64 1:1.0.2k-19.el7 @base \
openssl-libs.x86_64 1:1.0.2k-19.el7 @base \
#
這裡需要取消註釋部分(上圖紅框附近部分的設定),設定SSL路徑,但是這個SSL的安裝路徑在哪裡呢? 我查詢了一下,發現openssl的安裝路徑如下:
嘗試了幾個路徑,例如SSL=/usr/lib64/openssl ,然後重新編譯安裝Python,發現依然報錯,
[root@db-server Python-3.6.6]# vi Modules/Setup.dist
SSL=/usr/lib64/openssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
在Python的解壓安裝包裡面,我查了一下setup.py , 搜尋ssl關鍵字,發現有如下一些程式碼, 但是我在系統搜尋了一下,居然找不到這些目錄(ssl/include和/ssl/lib)和ssl.h這些檔案。
後面才搞清楚,openssl包只包含了可執行部分,openssl-devel才包含了標頭檔案、標頭檔案參考、某些庫檔案等以及跟開發相關的東西。所以只安裝了openssl包是找不到相應的標頭檔案的,安裝完openssl-devel之後,驗證確認這些目錄和檔案已經存在了。
使用# rpm -ql openssl-devel 定位安裝安裝路徑為 “ /usr/include/openssl ” ,修改安裝路徑的Modules/Setup.dist檔案,修改後的部分如下所示(對比上面截圖),然後重新編譯安裝Python後問題徹底解決。
SSL=/usr/include/openssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl –lcrypto