Preface
想在 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
How-To
方法一 : 使用 SCL
此時 Python2 與 Python3 是 並存 於 CentOS7 內的,這時若查詢系統預設執行的 Python 版本:
若要以 Python3 執行,則要先下指令:
但因為 SCL 原意就是讓我們可以同時使用 Python2 和 Python3,所以當您 登出 或 重新開機,預設要執行的 Python 版本又會回到 2.7。 若要每一次登入,預設執行的 Python 版本都是 Python3,方法如下 (不過 RedHat 也說這是解套方法,他們還沒想出正解):
1. 建立 rh-python36.sh
登出系統,再重新登入. 此時 Python 的預設版本應該就是 Python 3.6.3
方法二: 指定 Python 直譯器的路徑
在您撰寫的 python 程式的第一行指定要執行的 Python 直譯器, 你可以透過命令 which 找到 python 直譯器的路徑:
例如底下的範例 Python script test.py:
- #!/opt/rh/rh-python36/root/usr/bin/python
- import sys
- import platform
- print("Python version=%s" % platform.python_version())
Supplement
* How to install Python 3 on CentOS 7
* 軟件選集(SCL)軟件庫
* How can I make a Red Hat Software Collection persist after a reboot/logout?
沒有留言:
張貼留言