Python 多版本共存管理工具 Pyenv
經常遇到這樣的情況:
- 系統自帶的 Python 是 2.6,自己需要 Python 2.7 中的某些特性;
- 系統自帶的 Python 是 2.x,自己需要 Python 3.x;
此時需要在系統中安裝多個 Python,但又不能影響系統自帶的 Python,即需要實現 Python 的多版本共存。pyenv?就是這樣一個 Python 版本管理器。
安裝 pyenv
在終端執行如下命令以安裝 pyenv 及其插件:
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
安裝完成后,根據提示將如下語句加入到?~/.bashrc
?中:
export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" # 這句可以不加
然后重啟終端即可。
安裝 Python
查看可安裝的版本
$ pyenv install --list
該命令會列出可以用 pyenv 安裝的 Python 版本。列表很長,僅列舉其中幾個:
2.7.8 # Python 2 最新版本 3.4.1 # Python 3 最新版本 anaconda2-4.1.0 # 支持 Python 2.6 和 2.7 anaconda3-4.1.0 # 支持 Python 3.3 和 3.4
其中 2.7.8 和 3.4.1 這種只有版本號的是 Python 官方版本,其他的形如?anaconda2-4.1.0
這種既有名稱又有版本后的屬于 “衍生版” 或發行版。
安裝 Python 的依賴包
在編譯 Python 過程中會依賴一些其他庫文件,因而需要首先安裝這些庫文件,已知的一些需要預先安裝的庫如下。
在 CentOS/RHEL/Fedora 下:
sudo yum install readline readline-devel readline-static sudo yum install openssl openssl-devel openssl-static sudo yum install sqlite-devel sudo yum install bzip2-devel bzip2-libs
在 Ubuntu下:
sudo apt-get update sudo apt-get install make build-essential libssl-dev zlib1g-dev sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl sudo apt-get install llvm libncurses5-dev libncursesw5-dev
安裝指定版本
用戶可以使用?pyenv install
?安裝指定版本的 Python。如果你不知道該用哪一個,推薦你安裝 anaconda3 的最新版本,這是一個專為科學計算準備的發行版。
$ pyenv install anaconda3-4.1.0 -v /tmp/Python-build.20170108123450.2752 ~ Downloading Anaconda3-4.1.0-Linux-x86_64.sh... -> https://repo.continuum.io/archive/Anaconda3-4.1.0-Linux-x86_64.sh
執行該命令后,會從給定的網址中下載安裝文件?Anaconda3-4.1.0-Linux-x86_64.sh
。但由于文件很大,通常下載需要很久。建議的做法是,先執行以上命令然后馬上中斷安裝,這樣就知道 pyenv 要下載的文件的鏈接。然后用戶自己用其他更快的方式(比如wget、迅雷等等)從該鏈接中下載安裝文件,并將安裝文件移動到?~/.pyenv/cache
?目錄下(該目錄默認不存在,用戶要自行新建)。
以本文說的情況為例:
- 執行?
pyenv install anaconda3-4.1.0 -v
?獲取下載鏈接 - 用wget從下載鏈接中獲取文件?
Anaconda3-4.1.0-Linux-x86_64.sh
- 將安裝包移動到?
~/.pyenv/cache/Anaconda3-4.1.0-Linux-x86_64.sh
- 重新執行?
pyenv install anaconda3-4.1.0 -v
?命令。該命令會檢查 cache 目錄下已有文件的完整性,若確認無誤,則會直接使用該安裝文件進行安裝。
安裝過程中,若出現編譯錯誤,通常是由于依賴包未滿足,需要在安裝依賴包后重新執行該命令。
更新數據庫
在安裝 Python 或者其他帶有可執行文件的模塊之后,需要對數據庫進行更新:
$ pyenv rehash
查看當前已安裝的 Python 版本
$ pyenv versions * system (set by /home/seisman/.pyenv/version) anaconda3-4.1.0
其中的星號表示當前正在使用的是系統自帶的 Python。
設置全局的 Python 版本
$ pyenv global anaconda3-4.1.0 $ pyenv versions system * anaconda3-4.1.0 (set by /home/seisman/.pyenv/version)
當前全局的 Python 版本已經變成了 anaconda3-4.1.0。也可以使用?pyenv local
?或?pyenv shell
?臨時改變 Python 版本。
確認 Python 版本
$ Python Python 3.5.2 (Anaconda 4.1.0, Sep 10 2014, 17:10:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on Linux Type "help", "copyright", "credits" or "license" for more information. >>>
使用 Python
- 輸入?
Python
?即可使用新版本的 Python; - 系統自帶的腳本會以?
/usr/bin/Python
?的方式直接調用老版本的 Python,因而不會對系統腳本產生影響; - 使用?
pip
?安裝第三方模塊時會自動按照到當前的Python版本下,不會和系統模塊發生沖突。 - 使用?
pip
?安裝模塊后,可能需要執行?pyenv rehash
?更新數據庫;
pyenv 其他功能
pyenv uninstall
?卸載某個版本pyenv update
?更新 pyenv 及其插件
參考
http://haohuigou.com/73198.html