Python 多版本共存之 pyenv

2021-09-30 14:08:52 字數 2882 閱讀 2821

經常遇到這樣的情況:

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

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

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

安裝 pyenv

在終端執行如下命令以安裝 pyenv 及其外掛程式:

1 $ curl -l | bash

安裝完成後,根據提示將如下語句加入到 ~/.bashrc 中:

1 2

3 4

export pyenv_root=」ho

me/.

pyen

v」ex

port

path

=」pyenv_root/bin:pa

th」e

val「

(pyenv init -)」

eval 「$(pyenv virtualenv-init -)」 # 這句可以不加

然後重啟終端即可。

安裝 python

檢視可安裝的版本

1 $ 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 的最新版本,這是乙個專為科學計算準備的發行版。

1 2

3 4

$ pyenv install anaconda3-4.1.0 -v

/tmp/python-build.20170108123450.2752 ~

downloading anaconda3-4.1.0-linux-x86_64.sh…

->

更新資料庫

在安裝 python 或者其他帶有可執行檔案的模組之後,需要對資料庫進行更新:

1 $ pyenv rehash

檢視當前已安裝的 python 版本

1 2

3 $ pyenv versions

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

anaconda3-4.1.0

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

設定全域性的 python 版本

1 2

3 4 py

envg

loba

lana

cond

a3−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 即可使用新版本的 python;

系統自帶的指令碼會以 /usr/bin/python 的方式直接呼叫老版本的 python,因而不會對系統指令碼產生影響;

使用 pip 安裝第三方模組時會自動按照到當前的python版本下,不會和系統模組發生衝突。

使用 pip 安裝模組後,可能需要執行 pyenv rehash 更新資料庫;

pyenv 其他功能

pyenv uninstall 解除安裝某個版本

pyenv update 更新 pyenv 及其外掛程式

參考修訂歷史

2013-10-04:初稿;

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

2016-07-30:使用 pyenv-installer 安裝;

python多版本共存之pyenv

也許你開發中也會遇到需要不同版本的python,此時需要在系統中安裝多個,但又不能影響系統自帶的 python,即需要實現 python 的多版本共存。pyenv 就是這樣乙個 python 版本管理器 pyenv官方 git clone git pyenv echo export pyenv ro...

Python多版本共存之pyenv

經常遇到這樣的情況 此時需要在系統中安裝多個python,但又不能影響系統自帶的python,即需要實現python的多版本共存。pyenv就是這樣乙個python版本管理器。1 2 3 4 5 gitclonegit pyenv echo export pyenv root home pyenv ...

多版本python共存

當不同版本python之間相互不能相容時,可以使用virtualenv建立不同版本python的虛擬環境 當沒有指定python直譯器時 如下 p 即為指定的python版本 將使用預設的全域性python直譯器建立虛擬環境 windows virtualenv p c python27 pytho...