由于解決問題之后, 才寫的博客, 所以沒有圖片記錄.
盡量描述清楚一些
今天寫代碼的時(shí)候, 突然發(fā)現(xiàn) 文件里用了#define
定義宏之后, coc.nvim
的coc-clangd
補(bǔ)全就用不了
:checkhealth
了一下, 發(fā)現(xiàn)nvim
忘記支持python3
了
嘗試pip3 install neovim
的時(shí)候, 發(fā)現(xiàn)會(huì)警告然后安裝失敗.
截圖就沒有了, 警告第一句大概是:
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
大概的意思是Python
安裝沒有編譯支持 SSL/TLS
加密的模塊, 如果沒有 SSL/TLS
支持, 就可能無法安裝某些需要安全連接的Python
包
然后, 就開始踩坑了
踩坑
先嘗試重新編譯安裝python3
:
# 沒有解決問題, 不要嘗試
# 去到python源碼路徑下
make clean
./configure --prefix=/usr/local/python3 --with-ssl
make
make install
然后make
編譯出問題:
Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs
出現(xiàn)這個(gè)的原因是, CentOS7
執(zhí)行sudo yum install openssl-devel
安裝的openssl
版本是1.0.2
太老了
然后我又去下載了openssl1.1.1
的源碼 并且按照官網(wǎng)文檔進(jìn)行了編譯安裝.
# 官方文檔安裝步驟
wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/local/openssl1.1.1 --openssldir=/usr/local/openssl1.1.1 no-ssl2
make
make install
# 安裝完成之后, 還按照官方文檔 添加了環(huán)境變量
export PATH=/usr/local/openssl1.1.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/openssl1.1.1/lib
export LC_ALL="en_US.UTF-8"
export LDFLAGS="-L /usr/local/openssl1.1.1/lib -Wl,-rpath,/usr/local/openssl1.1.1/lib"
然后, 重啟了服務(wù)器, 執(zhí)行openssl version
會(huì)顯示OpenSSL 1.1.1g 21 Apr 2020
再次去嘗試編譯安裝python3
:
# 沒有解決問題, 不要嘗試
# 去到python源碼路徑下
make clean
./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl-1.1.1
make
make install
然而, 并沒有解決問題.
make
還是會(huì)出現(xiàn)相同的問題:
Could not build the ssl module!
``Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().`
LibreSSL 2.6.4 and earlier do not provide the necessary APIs
但是, 明明已經(jīng)安裝了openssl1.1.1
而且也指定了openssl1.1.1
的庫(kù)和軟件
也把makefile
里所有的/usr/local/openssl
改成了/usr/local/openssl1.1.1
但還是沒用.
解決
因?yàn)檠a(bǔ)全很重要, 所以一直在找怎么解決
終于, 在這篇提問中找到了解決方案:
https://stackoverflow.com/questions/60536472/building-python-and-openssl-from-source-but-ssl-module-fails
提問的某樓中提到, CentOS7
可以直接用yum
安裝openssl1.1.1
:
sudo yum install openssl11 openssl11-devel
mkdir /usr/local/openssl11
cd /usr/local/openssl11
ln -s /usr/lib64/openssl11 lib
ln -s /usr/include/openssl11 include
可以直接安裝openssl1.1.1
, 并將相應(yīng)的庫(kù)和包含 軟連接到了 /usr/local/openssl11/lib
和 /usr/local/openssl11/include
下
然后我再次 嘗試重新編譯安裝python3
:
# 去到python源碼路徑下
make clean
./configure --prefix=/usr/local/python3 --with-ssl=/usr/local/openssl11
make
這一次make
沒有再報(bào)ssl
相關(guān)錯(cuò)誤:
然后make install
將python3
安裝
安裝成功之后, 進(jìn)行軟連接:
# 備份 python 和 pip
mv /usr/bin/python /usr/bin/python.bak
mv /usr/bin/python3 /usr/bin/python3.bak
mv /usr/bin/pip3 /usr/bin/pip3.bak
# 建立軟連接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
然后 嘗試執(zhí)行pip3 install neovim
:
沒有再報(bào) WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
警告.
然后打開neovim
執(zhí)行:checkhealth
可以看到, python3
成功被支持, coc.nvim
也沒有配置錯(cuò)誤:
問題解決~文章來源:http://www.zghlxwxcb.cn/news/detail-600730.html
感謝閱讀~文章來源地址http://www.zghlxwxcb.cn/news/detail-600730.html
到了這里,關(guān)于[Linux] CentOS7 中 pip3 install 可能出現(xiàn)的 ssl 問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!