pyenv安裝+python3.7以上+centos+openssl的坑

之前遇到一個大坑,之前一直沒管,今天花了一些時間弄了一下。吃飯前簡單記錄一下:)

背景

在centos系統上,已經預先安裝了python2.6和python3.6,可以正常運行,但是自己想安裝python3.8。

坑一:

手動wget下載build,make&make install都沒問題,pip3 install requests庫,使用requests庫時出了ssl的問題;
urllib3.exceptions.SSLError: Can’t connect to HTTPS URL because the SSL module is not available.

坑二:

以爲是OpenSSL模塊出問題,然後去搞定ssl。系統本身有一個低版本,但官網已經不再支持更新,那裝最新的吧,又是一波手動操作,make & make install後,出現動態鏈接庫的問題
libssl.so.1.1: cannot open shared object file: No such file or directory
在/usr/local/lib64下找到了 libssl.so.1.1文件,但是明顯動態裝入出了問題,用which openssl |xargs ldd 就可以看到not found

	linux-vdso.so.1 =>  (0x00007ffee6326000)
	libssl.so.1.1 => not found
	libcrypto.so.1.1 => not found
	libz.so.1 => /lib64/libz.so.1 (0x00007fea27fd1000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fea27dcd000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fea27bb1000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fea277e3000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fea281e7000)

那麼需要將/usr/local/lib64寫入/etc/ld.so.conf,然後還必須使用ldconfig命令將它轉換到 ld.so.cache 文件中,才能裝載動態庫,這時候用openssl version命令查看版本。
原理看下面這篇文章:
https://blog.csdn.net/inuyashaw/article/details/54346434
至此,坑二填上了,但是並沒有解決坑一。
但是這樣的操作每次新開bash都要ldconfig裝,這個問題自行後續解決。

坑三

想使用pyenv來管理python版本,是否會解決掉坑一的問題;
一通手動安裝pyenv,中間遇到幾個小坑隨手谷歌解決了,安裝完畢後pyenv install 3.8.2。
安裝很慢,可以參考網上方法,我沒嘗試。

使用 pyenv 安裝 python 時,默認從 python.org 下載指定版本,往往特別慢,可以先從官網下載所需要的版本的源代碼到 ~/.pyenv/cache 目錄下,再執行安裝命令,注意這裏下載的是類似於 Python-3.7.3.tar.xz 這樣的壓縮文件。

然後又遇到openssl和一些包的依賴問題。查看官方文檔:
https://github.com/pyenv/pyenv/wiki/Common-build-problems
發現解決方法太。。。難懂了。明顯文檔作者對mac比較友好。
最後回到了坑二。

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