RHEL7 安裝python3.7.6

 

先去python官網下載python3的源碼包,網址:https://www.python.org/downloads/release/python-376/,下載Gzip包:

python3.7需要的openssl的版本爲1.0.2或者1.1.x,OpenSSL 1.0.1e-fips 11 Feb 2013版本將導致python3和pip3安裝後無法下載第三方庫,所以在RHEL7上安裝python3之前必須先安裝合適版本的openssl。可以看我另一篇博客文章,有具體操作過程。

 

第一步:將下載的包解壓後放到Linux的/usr/local目錄下:

[root@linuxprobe 桌面]# mv /home/kivy/Python-3.7.6/ /usr/local/

第二步:確定安裝目錄。

/home/kivy/Python-3.7.6/是我們解壓後的目錄,/usr/是要編譯、安裝的目錄。

 

第三步:在安裝python3之前先安裝一些依賴包,再進入到/home/kivy/Python-3.7.6/目錄,然後配置編譯:

yum -y install gcc
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum -y install libffi libffi-devel

接下來切換目錄,然後配置編譯:

[root@linuxprobe local]# cd /usr/local/Python-3.7.6/
[root@linuxprobe Python-3.7.6]# ./configure --prefix=/usr/ --enable-shared CFLAGS=-fPIC --enable-optimizations --with-openssl=/usr/

這裏加上--enable-shared和-fPIC之後可以將python3的動態鏈接庫編譯出來,默認情況編譯完lib下面只有python3.xm.a這樣的文件,python本身可以正常使用,但是如果編譯第三方庫需要python接口則會報錯;所以這裏建議按照上面的方式配置。--enable-optimizations 是優化選項,加上這個編譯後,性能有 10% 左右的優化。如果沒有加上–with-ssl參數,默認安裝的軟件涉及到ssl的功能不可用,但pip3安裝模塊的過程是需要ssl模塊的,若不指定,後期使用pip時就麻煩了。這裏我們選擇的安裝目錄是/usr/,因爲安裝在其他地方可能還要進行一些其他設置。--with-openssl=/usr/參數指定了openssl的位置。

第四步:編譯源碼並安裝

[root@linuxprobe Python-3.7.6]# make && make install
……
Successfully installed pip-19.2.3 setuptools-41.2.0
[root@linuxprobe Python-3.7.6]# python
Python 2.7.5 (default, Feb 11 2014, 07:46:25) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到,最後一句提示已經安裝了pip-19.2.3和setuptools-41.2.0。

輸入python命令可以看到,默認的python版本還是2.7.5的。

第五步:修改配置

輸入pip提示找不到,但輸入pip3可以找到,通過which pip3命令可以發現,指向/usr/bin/pip3。我們通過如下命令在/usr/bin/目錄中創建軟連接,使pip指向pip3:

[root@linuxprobe bin]# ln -s /usr/bin/pip3 /usr/bin/pip

 

默認的python版本還是2.7.5的,所以我們要刪除原來的名爲python的軟鏈接,重新建立一個,使其指向python3:

[root@linuxprobe bin]# rm /usr/bin/python
[root@linuxprobe bin]# ln -s /usr/bin/python3 /usr/bin/python

試一下python看輸出的版本:

[root@linuxprobe bin]# python
/usr/bin/python3.7: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

發現上面這麼個提示,而且無論輸入python,還是python3、python3.7、pip、pip3,都會得到這麼個結果。這是因爲python3.7運行時沒有加載到libpython3.7m.so.1.0 這個庫文件,將其複製到響應目錄就行了:

[root@linuxprobe lib]# cp libpython3.7m.so.1.0 /usr/lib64/

由於yum不能正常用了,必須修改/usr/bin/yum的第一行,使其仍然使用系統自帶的python2:

[root@linuxprobe bin]# vi /usr/bin/yum

將第一行改爲:

 

 

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