Centos7 安裝Python3的ssl模塊(python3集成ssl)

今天使用pip3 install virtualenv命令安裝virtualenv的時候一直安裝不了,
錯誤信息大概是這樣的。
WARNING: pip is configured with locations that require TLS/SSL, however the

前言

這個錯誤百度一搜索就知道是安裝python的時候沒有安裝ssl。
不同的python版本對應的openssl要求不一樣,我安裝的python版本是的3.8.3,要求的openssl在1.0.2以上,如果系統上面的openssl不滿足條件可以升級一下。

解決方案

參考連接
python3安裝文件遇到ssl未安裝問題
python3集成ssl的前提條件是系統有安裝openssl,可以使用命令驗證
openssl version

[root@hecs-x-large-2-linux-20200606135952 openssl-1.1.1a]# openssl version
OpenSSL 1.1.1a  20 Nov 2018
[root@hecs-x-large-2-linux-20200606135952 openssl-1.1.1a]# 

找到openssl的安裝目錄,可以使用下面的命令來找

[root@]# which openssl
/usr/bin/openssl
[root@]# ll /usr/bin/openssl
lrwxrwxrwx 1 root root 30 Jun 12 18:55 /usr/bin/openssl -> /usr/local/openssl/bin/openssl
[root@]# 

使用which找到openssl的使用目錄,爲/usr/bin/openssl
使用 ll /usr/bin/openssl找到其真實路徑爲/usr/local/openssl/bin/openssl,然後自己看下安裝目錄是/usr/local/openssl,這個目錄路徑在python集成ssl的時候用到。

修改python配置

修改啓動文件夾Modules/Setup,在python的源碼文件夾裏面,比如我的源碼地址是/root/Python-3.8.3,找到下面代碼塊中的SSL的地方,把這四行代碼的註釋放開就可以,特別需要注意的是確認openssl的安裝路徑是否正確,默認的openssl的配置路徑是/usr/local/ssl,但是我的安裝路徑是/usr/local/openssl,所以需要把路徑修改正確,開始我沒注意,後面安裝就報錯了。

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/openssl
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto

修改完成之後重新配置,編譯,然後安裝。

./configure
make && make install

最後測試ssl是否可用

[root@hecs-x-large-2-linux-20200606135952 Python-3.8.3]# python3
Python 3.8.3 (default, Jun 12 2020, 21:32:13) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ssl
>>> 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章