使用 pyenv 管理 Python 版本

記錄一下使用過程,留備以后使用。

pyenv 是 Python 版本管理工具。 pyenv 可以改變?nèi)值?Python 版本,安裝多個版本的 Python, 設置目錄級別的 Python 版本,還能創(chuàng)建和管理 virtual python environments 。所有的設置都是用戶級別的操作,不需要 sudo 命令。

pyenv 主要用來管理 Python 的版本,比如一個項目需要 Python 2.x ,一個項目需要 Python 3.x 。 而 virtualenv 主要用來管理 Python 包的依賴,不同項目需要依賴的包版本不同,則需要使用虛擬環(huán)境。

pyenv 通過系統(tǒng)修改環(huán)境變量來實現(xiàn) Python 不同版本的切換。而 virtualenv 通過將 Python 包安裝到一個目錄來作為 Python 包虛擬環(huán)境,通過切換目錄來實現(xiàn)不同包環(huán)境間的切換。

pyenv 的美好之處在于,它并沒有使用將不同的 PATH植入不同的shell這種高耦合的工作方式,而是簡單地在PATH植入不同的shell這種高耦合的工作方式,而是簡單地在PATH 的最前面插入了一個墊片路徑(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有對 Python 可執(zhí)行文件的查找都會首先被這個 shims 路徑截獲,從而使后方的系統(tǒng)路徑失效。


pyenv 安裝


根據(jù)官網(wǎng)的 安裝說明 或者 自動安裝 。 如果使用 Mac 直接使用 Homebrew。安裝成功后記得在 .bashrc 或者 .bash_profile 中添加三行來開啟自動補全。

$ echo -e '\npyenv' >>~/.bashrc
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ source ~/.bashrc

根據(jù)自己的環(huán)境配置。

自動安裝

pyenv 提供了自動安裝的工具,執(zhí)行命令安裝即可:

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

保證系統(tǒng)有 git ,否則需要新安裝 git。


手動安裝


如果想要更加詳細的了解安裝過程,可以使用手動安裝。將 pyenv 檢出到你想安裝的目錄。建議路徑為:$HOME/.pyenv

cd ~
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
source ~/.bashrc


$ vim /etc/profile.d/pyenv.sh
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
$ . /etc/profile.d/pyenv.sh

添加環(huán)境變量。PYENV_ROOT 指向 pyenv 檢出的根目錄,并向 PATH 添加PYENV_ROOT/bin 以提供訪問 pyenv 命令的路徑。

這里的 shell 配置文件(~/.bash_profile)依不同 Linux 而需作修改,如果使用 Zsh 則需要相應的配置 ~/.zshrc

在使用 pyenv 之后使用 pip 安裝的第三方模塊會自動安裝到當前使用 python 版本下,不會和系統(tǒng)模塊產(chǎn)生沖突。使用 pip 安裝模塊之后,如果沒有生效,記得使用 pyenv rehash 來更新墊片路徑。

注意: 第一次激活虛擬環(huán)境可能會遇到:

 $ pyenv activate env
 $ pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
 $ (env) deploy@ubuntu:~$ pyenv deactivate

在 .bashrc 中添加就可以了

export PYENV_VIRTUALENV_DISABLE_PROMPT=1  


pyenv 常用命令



查看安裝 Python 版本

pyenv versions     # 查看本機安裝版本
pyenv install -l      # 查看可安裝版本

python 安裝與卸載

$ pyenv install 2.7.3            # 安裝 python
$ pyenv uninstall 2.7.3        # 卸載 python

$ pyenv global 2.7.3       # 設置全局的 Python 版本,通過將版本號寫入 ~/.pyenv/version 文件的方式。
$ pyenv local 2.7.3        # 設置 Python 本地版本,通過將版本號寫入當前目錄下的 .python-version 文件的方式。通過這種方式設置的 Python 版本優(yōu)先級較 global 高。

python 優(yōu)先級 : shell > local > global
pyenv 會從當前目錄開始向上逐級查找 .python-version 文件,直到根目錄為止。若找不到,就用 global 版本。

$ pyenv shell 2.7.3         # 設置面向 shell 的 Python 版本,通過設置當前 shell 的 PYENV_VERSION 環(huán)境變量的方式。這個版本的優(yōu)先級比 local 和 global 都要高。–unset 參數(shù)可以用于取消當前 shell 設定的版本。
$ pyenv shell --unset

$ pyenv rehash              # 創(chuàng)建墊片路徑(為所有已安裝的可執(zhí)行文件創(chuàng)建 shims,如:~/.pyenv/versions/*/bin/*,因此,每當你增刪了 Python 版本或帶有可執(zhí)行文件的包(如 pip)以后,都應該執(zhí)行一次本命令)


pyenv-virtualenv


備注: 后續(xù)更新

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

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

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