Python多版本共存管理工具之pyenv

經(jīng)常遇到這樣的情況:

系統(tǒng)自帶的Python是2.6,自己需要Python 2.7中的某些特性;

系統(tǒng)自帶的Python是2.x,自己需要Python 3.x;

此時(shí)需要在系統(tǒng)中安裝多個(gè)Python,但又不能影響系統(tǒng)自帶的Python,即需要實(shí)現(xiàn)Python的多版本共存。pyenv就是這樣一個(gè)Python版本管理器。

1. 安裝pyenv

$ gitclonegit://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

2. 安裝Python

查看可安裝的版本

$ pyenvinstall--list

該命令會(huì)列出可以用pyenv安裝的Python版本,僅列舉幾個(gè):

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這樣的只有版本號(hào)的為Python官方版本,其他的形如xxxxx-x.x.x這種既有名稱又有版本后的屬于“衍生版”或發(fā)行版。

2.1 安裝Python的依賴包

在安裝Python時(shí)需要首先安裝其依賴的其他軟件包,已知的一些需要預(yù)先安裝的庫(kù)如下。

在CentOS/RHEL/Fedora下:

sudo yuminstallreadline readline-devel readline-staticsudo yuminstallopenssl openssl-devel openssl-staticsudo yuminstallsqlite-develsudo yuminstallbzip2-devel bzip2-libs

2.2 安裝指定版本

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

$ pyenvinstall3.4.1-v

該命令會(huì)從github上下載python的源代碼,并解壓到/tmp目錄下,然后在/tmp中執(zhí)行編譯工作。若依賴包沒有安裝,則會(huì)出現(xiàn)編譯錯(cuò)誤,需要在安裝依賴包后重新執(zhí)行該命令。

對(duì)于科研環(huán)境,更推薦安裝專為科學(xué)計(jì)算準(zhǔn)備的Anaconda發(fā)行版,pyenv install anaconda-2.1.0安裝2.x版本,pyenv install anaconda3-2.1.0安裝3.x版本;

Anacoda很大,用pyenv下載會(huì)比較慢,可以自己到Anaconda官方網(wǎng)站下載,并將下載得到的文件放在~/.pyenv/cache目錄下,則pyenv不會(huì)重復(fù)下載。

2.3 更新數(shù)據(jù)庫(kù)

安裝完成之后需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新:

$ pyenvrehash

查看當(dāng)前已安裝的python版本

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

其中的星號(hào)表示當(dāng)前正在使用的是系統(tǒng)自帶的python。

2.4 設(shè)置全局的python版本

$ pyenvglobal3.4.1$ pyenv versionssystem*3.4.1(setby/home/seisman/.pyenv/version)

當(dāng)前全局的python版本已經(jīng)變成了3.4.1。也可以使用pyenv local或pyenv shell臨時(shí)改變python版本。

2.5 確認(rèn)python版本

$ pythonPython3.4.1(default, Sep102014,17:10:18)[GCC4.4.720120313(Red Hat4.4.7-1)] on linuxType"help","copyright","credits"or"license"formore information.>>>

3.0 使用python

輸入python即可使用新版本的python;

系統(tǒng)自帶的腳本會(huì)以/usr/bin/python的方式直接調(diào)用老版本的python,因而不會(huì)對(duì)系統(tǒng)腳本產(chǎn)生影響;

使用pip安裝第三方模塊時(shí)會(huì)安裝到~/.pyenv/versions/3.4.1下,不會(huì)和系統(tǒng)模塊發(fā)生沖突。

使用pip安裝模塊后,可能需要執(zhí)行pyenv rehash更新數(shù)據(jù)庫(kù);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容