2018-08-11

【Python】CentOS7 安裝 Python3

參考資料 ----
How to install Python 3 on CentOS 7
軟件選集(SCL)軟件庫
How can I make a Red Hat Software Collection persist after a reboot/logout?


想在 CentOS7 使用 Python3 是有點小麻煩的。

RedHat 的套件政策是:主版本週期定為 10 年,主版本釋出後,所包含的套件都會維持主版本不變;例如:CentOS7 內含的 Python 版本是 2.7,在這 10 年間,Python 的版本就會是 2.7.x 的更新。

Python 因為太好用,所以許多套件將 Python 綁在一起,如果想要移除 Python2,會因為套件的相依性而連帶移除了其他原本不想或不能移除的套件!例如:重要的套件管理 yum

但是,10 年是會有滄海滄田的變化的,雖然 RedHat / CentOS 的主要對象是企業,企業重視系統的穩定使用,同時也希望在下一個主版本釋出前,可以對新工具 / 新功能進行 開發 / 測試 / 研究 / 實驗。

RedHat 聽到了企業的聲音,推出了 Software Collections(SCL)SCL 包含了新的套件可供安裝,其中 Python3 的版本,目前更新到 3.6


[root]# vi  /etc/yum.repos.d/CentOS-Base.repo
→ 找到 [extras]
將 enabled 值改成 1
:x 存檔離開


[root]# yum  install  centos-release-scl


偷懶,安裝所有以 rh-python36 字首的套件  :-P

[root]# yum  install  rh-python36*


此時 Python2Python3並存 CentOS7 內的,這時若查詢系統預設執行的 Python 版本

[root]# python  --version

會回應顯示 python 2.7.5



若要以 Python3 執行,則要先下指令:

[root]# scl  enable  rh-python36  bash

再查詢一次

[root]# python  --version

這次就會回應 python 3.6.3

但因為 SCL  原意就是讓我們可以同時使用 Python2Python3,所以當您 登出 或 重新開機,預設要執行的 Python 版本又會回到 2.7


若要每一次登入,預設執行的 Python 版本都是 Python3,方法如下(不過 RedHat 也說這是解套方法,他們還沒想出正解):


建立 rh-python36.sh

[root]# vi /etc/profile.d/rh-python36.sh
 
#!/bin/bash
source  scl_source  enable  rh-python36
 
:x 存檔離開

登出系統,再重新登入

[root]# python  --version
系統就會回應

python 3.6.3



方法二:

Python3 會安裝在下述的路徑

/opt/rh/rh-python36/root/bin/python

在您撰寫的 python 程式的第一行指定要執行的 Python 直譯器

例如,您的程式名為 test.py
 
#!/opt/rh/rh-python36/root/bin/python
import sys
import platform

print(platform.python_version())
 

然後,變更 test.py 的屬性為可執行

[root]# chmod  a+x  test.py

這樣,您的程式會變成可執行檔

執行方式為:切換到 test.py 所在的目錄下,直接執行 test.py

[root]# ./test.py