以下內(nèi)容均轉(zhuǎn)自我的博客 YuanBLQ
由于 python 擁有眾多的版本,以及不同模塊也有不同的版本楞卡。如果每個版本之間相互都不兼容那也就無所謂什么版本控制了亿扁,可是同一機(jī)器上各個版本的 python 可以相互兼容并存,而且同一模塊不同版本有時需要的 python 版本是不相同的娇斩,所以 python 的版本控制顯得尤為重要夹囚。
pyenv
是個 shell 腳本纵刘,能夠輕松得實現(xiàn)各個不同版本 python 的相互間切換,而且各個版本的 python 切換不限于全局切換荸哟,甚至不同文件夾都可以擁有不同的 python 版本假哎。
下面我們就來看看如何使用 pyenv
。
管理 python 版本
如果你既需要使用 python2
鞍历,也需要使用 python3
舵抹,pyenv
將是一個很高效的 python 版本管理工具。
由于 pyenv
是腳本插件劣砍,所以只能在類 UNIX 系統(tǒng)上使用惧蛹。所以,如果你想在 windows 上安裝刑枝,那就點(diǎn)擊左上角去隔壁 virtualenv
瞧瞧香嗓。
安裝 pyenv(Ubuntu)
-
確定你想把
pyenv
安裝在哪。推薦安裝在$HOME/.pyenv
仅讽,但你也可以安裝在任意位置陶缺。$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
-
定義你
PYENV_ROOT
的環(huán)境變量來指定你把 pyenv 倉庫克隆到了哪钾挟,并把$PYENV_ROOT/bin
添加到你的$PATH
中洁灵,這樣就能在命令行使用pyenv
命令。$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
-
設(shè)置啟動 shell 時自動加載 pyenv 腳本掺出。在 shell 配置文件的最后面加上
eval "$(pyenv init -)"
徽千。$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
-
重啟 shell,使腳本生效汤锨。
$ exec $SHELL
-
安裝不同的 python 版本到
$(pyenv root)/versions
文件夾双抽。
在pyenv
安裝之前的所有 python 版本都?xì)w為system
版本。 (可以用pyenv versions
查看當(dāng)前安裝的 python 版本)
在安裝 python 之前闲礼,可以使用pyenv install -l
查看當(dāng)前可以安裝哪些 python 版本牍汹。
然后使用pyenv install 選擇的版本
來安裝你所選擇的 python 版本。比如pyenv install 3.6.1
安裝 python 官網(wǎng)的版本柬泽。
使用 git 更新 pyenv
如果你是按照上面的方法安裝的 pyenv
慎菲,那你可以使用 git 來更新。
更新為最新的開發(fā)版
$ cd $(pyenv root)
$ git pull
更新為指定的版本
$ cd $(pyenv root)
$ git fetch
$ git tag
v0.1.0
$ git checkout v0.1.0
pyenv 的基本操作命令
-
pyenv versions
查看當(dāng)前已安裝的 python 版本 -
pyenv install ...
安裝指定版本的 python -
pyenv global python版本
切換全局 python 版本 -
pyenv local python版本
切換當(dāng)前文件夾下的 python 版本 -
pyenv shell python版本
切換當(dāng)前 shell 中的 python 版本 -
pyenv version
查看當(dāng)前使用的 python 版本
卸載 pyenv
- 如果你只是想禁用
pyenv
锨并,那么把pyenv init
從 shell 的配置文件中移除露该,然后重啟 shell 就行了(移除后pyenv
命令仍然能使用,但是版本切換命令不會生效)第煮。 - 完整卸載 pyenv解幼。執(zhí)行上一步抑党,然后把 pyenv 的根目錄刪除即可全部刪除 pyenv(通過
pyenv install ...
安裝的 python 版本都會刪除)。rm -rf $(pyenv root)
卸載 pyenv 安裝的 python 版本
- 使用
pyenv uninstall ...
命令撵摆。 - 直接刪除
versions
文件夾下的對應(yīng) python 版本文件夾底靠。
pyenv 其他操作命令
參見 commands.md
管理 python 模塊版本
使用 virtualenv
和 virtualenvwrapper
管理 python 虛擬環(huán)境,每次都需要手動激活或退出特铝。對于懶癌晚期患者苛骨,pyenv-virtual
的自動激活和退出虛擬環(huán)境功能簡直不能再贊。另外搭配 pyenv
食用效果更佳苟呐。
安裝 pyenv-virtualenv(Ubuntu)
由于 pyenv-virtualenv
是 pyenv
的一個插件痒芝,所以安裝之前需要先安裝 pyenv
。
注意:如果 pyenv
的安裝目錄不是 $HOME/.pyenv
需要確鼻K兀克隆下來的倉庫位于你所安裝的 pyenv
目錄下的 plugin
文件夾下严衬。
接下來就可以執(zhí)行安裝步驟了:
- 克隆
pyenv-virtual
倉庫到plugin
文件夾下。 - (可選/重點(diǎn))添加
pyenv virtualenv-init
到你的 shell 配置文件中笆呆,這樣進(jìn)入指定文件夾自動進(jìn)入虛擬環(huán)境请琳,離開文件夾退出虛擬環(huán)境。$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
- 重啟 shell赠幕。
創(chuàng)建 pyenv-virtualenv 虛擬環(huán)境
pyenv virtualenv 指定python版本 虛擬環(huán)境名字
pyenv virtualenv 虛擬環(huán)境名字
如果不指定 python 版本俄精,則默認(rèn)使用當(dāng)前 pyenv version
的 python 版本。
創(chuàng)建的虛擬環(huán)境位于 $(pyenv root)/versions/
下的指定 python 版本的文件夾中 envs/
文件夾下榕堰。
激活虛擬環(huán)境
- 自動激活/退出
- 手動激活/退出
自動激活環(huán)境:
- 在
.bashrc
文件的最后添加eval "$(pyenv virtualenv-init -)"
竖慧,然后在 shell 中輸入exec "$SHELL"
重啟 shell,或者手動重啟 shell逆屡。 - 在想要激活虛擬環(huán)境的文件夾中新建
.python-version
文件圾旨,并寫入虛擬環(huán)境的名字(pyenv local python版本
該命令也是通過創(chuàng)建該文件來達(dá)到進(jìn)入該文件夾后自動使用指定 python 版本的目的)。 - 以后進(jìn)入該的文件夾就會自動激活虛擬環(huán)境魏蔗,離開該文件夾就會退出虛擬環(huán)境砍的。
手動激活環(huán)境:
-
pyenv activate 虛擬環(huán)境名字
激活虛擬環(huán)境。 -
pyenv deactivate
退出虛擬環(huán)境莺治。
刪除虛擬環(huán)境
有 2 種方法:
- 刪除
$(pyenv root)/versions
和$(pyenv root)/versions/{version}/envs
的相關(guān)文件夾即可廓鞠。 - 命令行運(yùn)行
pyenv uninstall 虛擬環(huán)境的名字