採用update-alternatives 切換python版本

 

update-alternatives是Debian提供的一個工具(非Debian系的就不用看了),原理類似於上面一個辦法,也是通過鏈接的方式,但是其切換的過程非常方便。

首先看一下update-alternatives的幫助信息:

$ update-alternatives --help
用法:update-alternatives [<選項> ...] <命令>

命令:
  --install <鏈接> <名稱> <路徑> <優先級>
    [--slave <鏈接> <名稱> <路徑>] ...
                           在系統中加入一組候選項。
  --remove <名稱> <路徑>   從 <名稱> 替換組中去除 <路徑> 項。
  --remove-all <名稱>      從替換系統中刪除 <名稱> 替換組。
  --auto <名稱>            將 <名稱> 的主鏈接切換到自動模式。
  --display <名稱>         顯示關於 <名稱> 替換組的信息。
  --query <名稱>           機器可讀版的 --display <名稱>.
  --list <名稱>            列出 <名稱> 替換組中所有的可用候選項。
  --get-selections         列出主要候選項名稱以及它們的狀態。
  --set-selections         從標準輸入中讀入候選項的狀態。
  --config <名稱>          列出 <名稱> 替換組中的可選項,並就使用其中
                           哪一個,徵詢用戶的意見。
  --set <名稱> <路徑>      將 <路徑> 設置爲 <名稱> 的候選項。
  --all                    對所有可選項一一調用 --config 命令。

<鏈接> 是指向 /etc/alternatives/<名稱> 的符號鏈接。
    (如 /usr/bin/pager)
<名稱> 是該鏈接替換組的主控名。
    (如 pager)
<路徑> 是候選項目標文件的位置。
    (如 /usr/bin/less)
<優先級> 是一個整數,在自動模式下,這個數字越高的選項,其優先級也就越高。

選項:
  --altdir <目錄>          改變候選項目錄。
  --admindir <目錄>        設置 statoverride 文件的目錄。
  --log <文件>             改變日誌文件。
  --force                  就算沒有通過自檢,也強制執行操作。
  --skip-auto              在自動模式中跳過設置正確候選項的提示
                           (只與 --config 有關)
  --verbose                啓用詳細輸出。
  --quiet                  安靜模式,輸出儘可能少的信息。不顯示輸出信息。
  --help                   顯示本幫助信息。
  --version                顯示版本信息。

我們僅需要了解3個參數就行了

  • --install <鏈接> <名稱> <路徑> <優先級> :建立一組候選項
  • --config <名稱> :配置 <名稱>組中的可選項,並選擇使用其中哪一個
  • --remove <名稱> <路徑> :從 <名稱> 中去掉 <路徑>選項

首先我們先看一下有沒有關於Python的可選項:

$ update-alternatives --display python
update-alternatives: 錯誤: 無 python 的候選項

那首先先建立python的組,並添加Python2和Python3的可選項

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 # 添加Python2可選項,優先級爲2
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1 #添加Python3可選項,優先級爲1

注意,這裏的 /usr/bin/python 鏈接文件,兩個可選項必須是一樣的,這樣這個鏈接文件纔可以選擇兩個不同的可選項去鏈接。

這時如果我們查看 /usr/bin/python 這個文件時,會發現它已經鏈接到了 /etc/alternatives/python 。

lrwxrwxrwx 1 root root        24  6月 19 18:39 python -> /etc/alternatives/python

然後我們再看一下版本

$ python --version
Python 2.7.6

爲什麼還是Python2,看一下配置

$ sudo update-alternatives --config python
有 2 個候選項可用於替換 python (提供 /usr/bin/python)。

  選擇       路徑              優先級  狀態
------------------------------------------------------------
* 0            /usr/bin/python2.7   2         自動模式
  1            /usr/bin/python2.7   2         手動模式
  2            /usr/bin/python3.4   1         手動模式
要維持當前值[*]請按回車鍵,或者鍵入選擇的編號:

原來是因爲默認選中了自動模式,而Python2的優先級高於Python3,(如果選擇0,默認自動模式,會使用python2.7,如果選擇1選擇手動模式,Python2的優先級高於Python3,選擇Python2,),這時候只要鍵入2,就可以使用Python3了。

如果你想要刪除某個可選項的話:

$ sudo update-alternatives --remove python /usr/bin/python2.7

update-alternatives只適用於Debian系Liunx。

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