Python多版本共存之pyenv

來源: http://seisman.info/python-pyenv.html

經常遇到這樣的情況:

  • 系統自帶的Python是2.6,自己需要Python 2.7中的某些特性;

  • 系統自帶的Python是2.x,自己需要Python 3.x;

此時需要在系統中安裝多個Python,但又不能影響系統自帶的Python,即需要實現Python的多版本共存。pyenv就是這樣一個Python版本管理器。

安裝pyenv

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ exec $SHELL -l

安裝Python

查看可安裝的版本

$ pyenv install --list

該命令會列出可以用pyenv安裝的Python版本,僅列舉幾個:

2.7.8   # Python 2最新版本
3.4.1   # Python 3最新版本
anaconda-2.0.1  # 支持Python 2.6和2.7
anaconda3-2.0.1 # 支持Python 3.3和3.4

其中形如 x.x.x 這樣的只有版本號的爲Python官方版本,其他的形如 xxxxx-x.x.x 這種既有名稱又有版本後的屬於“衍生版”或發行版。

安裝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

安裝指定版本

使用如下命令即可安裝python 3.4.1:

$ pyenv install 3.4.1 -v

該命令會從github上下載python的源代碼,並解壓到/tmp目錄下,然後在/tmp中執行編譯工作。若依賴包沒有安裝,則會出現編譯錯誤,需要在安裝依賴包後重新執行該命令。

對於科研環境,更推薦安裝專爲科學計算準備的Anaconda發行版,pyenv install anaconda-2.1.0 安裝2.x版本, pyenv install anaconda3-2.1.0 安裝3.x版本;

Anacoda很大,用pyenv下載會比較慢,可以自己到Anaconda官方網站下載,並將下載得到的文件放在 ~/.pyenv/cache 目錄下,則pyenv不會重複下載。

更新數據庫

安裝完成之後需要對數據庫進行更新:

$ pyenv rehash

查看當前已安裝的python版本

$ pyenv versions
* system (set by /home/seisman/.pyenv/version)3.4.1

其中的星號表示當前正在使用的是系統自帶的python。

設置全局的python版本

$ pyenv global 3.4.1
$ pyenv versions
system
* 3.4.1 (set by /home/seisman/.pyenv/version)

當前全局的python版本已經變成了3.4.1。也可以使用 pyenv local 或 pyenv shell 臨時改變python版本。

確認python版本

$ python
Python 3.4.1 (default, 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 安裝第三方模塊時會安裝到 ~/.pyenv/versions/3.4.1 下,不會和系統模塊發生衝突。

  • 使用 pip 安裝模塊後,可能需要執行 pyenv rehash 更新數據庫;

參考

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

修訂歷史

  • 2013-10-04:初稿;

  • 2014-10-07:將Python依賴包一段的位置提前;


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