ERROR! Can't connect to HTTPS URL because the SSL module is not available

內容說明

由於 python 3.6 中的 pip 套件要求 openssl 版本需要大於 1.0.2,但 centOS6 可更新的最高版本只能到 1.0.1,於是必須重新安裝。
centOS6,跟 python 都好麻煩…

ERROR: Can’t connect to HTTPS URL because the SSL module is not available

我是在進行 pip install requests時發生,內容大意是指說 pip 不能夠用 SSL,所以找不到套件可以安裝。其實是說沒有相對應的版本,但我覺得這樣講很爛

solution: update openssl and vim file

由於此問題是 SSL,在我花了約 1 小時查找文件後找出是因為 openssl 版本需要大於 1.0.2,但 centOS6 可更新的最高版本只能到 1.0.1,所以需要進行更新。

如果是 os 為 centOS6 可參考此篇
CentOS6 安裝與更新 openssl 1.1.0 教學

更新完 openssl 後,怎麼做?

重新編譯一次 python ,cd 回 python

1
2
cd Python-a.b.c
./configure --with-ssl

修改文件,讓 pip 可以抓到 openssl 路徑

需要先找到自己的 openssl 資料夾,驗證可以看 openssl 資料夾內有沒有 include..等資料夾,記住此路徑,接下來會用到。

先不要急著輸入 make 指令,先修改文件 Python-a.b.c/Modules/Setup

1
vim ./Modules/Setup

應該會出現一堆開頭井字的程式碼,之後搜尋 SSL=,方法為 /SSL=
如果正確的話視窗應顯示在這裡

1
2
3
4
5
6
7
8
9
10
11
12

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/lab/openssl-1.0.2j/ #將這行註解取消,並把 openssl 的路徑放入 SSL= 之後
_ssl _ssl.c \ #將這行註解取消
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ #將這行註解取消
-L$(SSL)/lib -lssl -lcrypto #將這行註解取消

# The crypt module is now disabled by default because it breaks builds
# on many systems (where -lcrypt is needed), e.g. Linux (I believe).

#_crypt _cryptmodule.c # -lcrypt # crypt(3); needs -lcrypt on some systems

修改完成後,編譯與安裝

1
2
make 
make install

驗證

1
pip3 install requests

以上全部都沒問題驗證也成功話,那在 centOS6 上就沒有問題了!太強了你,我花了兩小時才解決此問題..

參考連結

centos6.8安装python3.7.3报错Can’t connect to HTTPS URL because the SSL module is not available问题解决
Centos7安装uwsgi出现关于SSL错误的问题

心得

環境的問題時常把新手搞得喘不過氣,幸好這次我能克服此困難。希望以後 python 的版本控制能夠更好,centOS6 提供的相容性也可以更棒!雖然他 2020/11 就要停止更新了…
不過還是謝謝能在網路上提供資源的大神們,沒有他們,我連解決都不能解決!

尤其是國人,技術資源國人比起台灣資源多很多。

  • 版權聲明: 本部落格所有文章除有特別聲明外,均採用 Apache License 2.0 許可協議。轉載請註明出處!
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: