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?目錄下(該目錄默認不存在,用戶要自行新建)。

以本文說的情況為例:

  1. 執行?pyenv install anaconda3-4.1.0 -v?獲取下載鏈接
  2. 用wget從下載鏈接中獲取文件?Anaconda3-4.1.0-Linux-x86_64.sh
  3. 將安裝包移動到?~/.pyenv/cache/Anaconda3-4.1.0-Linux-x86_64.sh
  4. 重新執行?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 其他功能

  1. pyenv uninstall?卸載某個版本
  2. pyenv update?更新 pyenv 及其插件

參考

  1. https://github.com/yyuu/pyenv

【超全整理】《Python自動化全能開發從入門到精通》python基礎教程筆記全放送

相關新聞

聯系我們

400-080-6560

在線咨詢:點擊這里給我發消息

郵件:[email protected]

工作時間:周一至周日,09:00-18:30

QR code
云南快乐10分开奖直播