以下內(nèi)容均轉(zhuǎn)自我的博客 YuanBLQ
由于 python 擁有眾多的版本,以及不同模塊也有不同的版本。如果每個(gè)版本之間相互都不兼容那也就無所謂什么版本控制了,可是同一機(jī)器上各個(gè)版本的 python 可以相互兼容并存,而且同一模塊不同版本有時(shí)需要的 python 版本是不相同的,所以 python 的版本控制顯得尤為重要。
pyenv 是個(gè) shell 腳本,能夠輕松得實(shí)現(xiàn)各個(gè)不同版本 python 的相互間切換,而且各個(gè)版本的 python 切換不限于全局切換,甚至不同文件夾都可以擁有不同的 python 版本。
下面我們就來看看如何使用 pyenv。
管理 python 版本
如果你既需要使用 python2,也需要使用 python3,pyenv 將是一個(gè)很高效的 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 倉(cāng)庫(kù)克隆到了哪,并把$PYENV_ROOT/bin添加到你的$PATH中,這樣就能在命令行使用pyenv命令。$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc -
設(shè)置啟動(dòng) shell 時(shí)自動(dòng)加載 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命令仍然能使用,但是版本切換命令不會(huì)生效)。 - 完整卸載 pyenv。執(zhí)行上一步,然后把 pyenv 的根目錄刪除即可全部刪除 pyenv(通過
pyenv install ...安裝的 python 版本都會(huì)刪除)。rm -rf $(pyenv root)
卸載 pyenv 安裝的 python 版本
- 使用
pyenv uninstall ...命令。 - 直接刪除
versions文件夾下的對(duì)應(yīng) python 版本文件夾。
pyenv 其他操作命令
參見 commands.md
管理 python 模塊版本
使用 virtualenv 和 virtualenvwrapper 管理 python 虛擬環(huán)境,每次都需要手動(dòng)激活或退出。對(duì)于懶癌晚期患者,pyenv-virtual 的自動(dòng)激活和退出虛擬環(huán)境功能簡(jiǎn)直不能再贊。另外搭配 pyenv 食用效果更佳。
安裝 pyenv-virtualenv(Ubuntu)
由于 pyenv-virtualenv 是 pyenv 的一個(gè)插件,所以安裝之前需要先安裝 pyenv。
注意:如果 pyenv 的安裝目錄不是 $HOME/.pyenv 需要確保克隆下來的倉(cāng)庫(kù)位于你所安裝的 pyenv 目錄下的 plugin 文件夾下。
接下來就可以執(zhí)行安裝步驟了:
- 克隆
pyenv-virtual倉(cāng)庫(kù)到plugin文件夾下。 - (可選/重點(diǎn))添加
pyenv virtualenv-init到你的 shell 配置文件中,這樣進(jìn)入指定文件夾自動(dòng)進(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)境
- 自動(dòng)激活/退出
- 手動(dòng)激活/退出
自動(dòng)激活環(huán)境:
- 在
.bashrc文件的最后添加eval "$(pyenv virtualenv-init -)",然后在 shell 中輸入exec "$SHELL"重啟 shell,或者手動(dòng)重啟 shell。 - 在想要激活虛擬環(huán)境的文件夾中新建
.python-version文件,并寫入虛擬環(huán)境的名字(pyenv local python版本該命令也是通過創(chuàng)建該文件來達(dá)到進(jìn)入該文件夾后自動(dòng)使用指定 python 版本的目的)。 - 以后進(jìn)入該的文件夾就會(huì)自動(dòng)激活虛擬環(huán)境,離開該文件夾就會(huì)退出虛擬環(huán)境。
手動(dòng)激活環(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)境的名字