2019年6月2日 星期日

[Linux 常見問題] CentOS7 安裝 Python3

Source From Here 
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 
# yum install centos-release-scl
# yum install rh-python36*

此時 Python2 與 Python3 是 並存 於 CentOS7 內的,這時若查詢系統預設執行的 Python 版本: 
# python --version
Python 2.7.5

若要以 Python3 執行,則要先下指令: 
# scl enable rh-python36 bash
# python --version
Python 3.6.3

但因為 SCL 原意就是讓我們可以同時使用 Python2 和 Python3,所以當您 登出 或 重新開機,預設要執行的 Python 版本又會回到 2.7。 若要每一次登入,預設執行的 Python 版本都是 Python3,方法如下 (不過 RedHat 也說這是解套方法,他們還沒想出正解): 
1. 建立 rh-python36.sh 
# vi /etc/profile.d/rh-python36.sh
  1. #!/bin/bash  
  2. source  scl_source  enable  rh-python36  

登出系統,再重新登入. 此時 Python 的預設版本應該就是 Python 3.6.3 

方法二: 指定 Python 直譯器的路徑 
在您撰寫的 python 程式的第一行指定要執行的 Python 直譯器, 你可以透過命令 which 找到 python 直譯器的路徑: 
# python --version
Python 3.6.3

# which python
/opt/rh/rh-python36/root/usr/bin/python

例如底下的範例 Python script test.py
  1. #!/opt/rh/rh-python36/root/usr/bin/python  
  2. import sys  
  3. import platform  
  4.   
  5. print("Python version=%s" % platform.python_version())  
執行後應該可以得到使用的 Python 直譯器版本: 
# chmod +x test.py // 設定 test.py 為可執行
# ./test.py
Python version=3.6.3

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

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...