天天看點

Mac OS 上用pyenv和pyenv-virtualenv管理多個Python多版本及虛拟環境

軟體簡介:

pyenv 是一款特别好用的Python版本管理器,可以在同一台電腦上不同的目錄裡分别運作不同版本的Python, 并且互不影響,安裝的包也互不影響。github項目位址:https://github.com/yyuu/pyenv

pyenv-virtualenv 是pyenv的一個plugin,可以用來建立基于不同Python版本的幹淨的虛拟環境。github項目位址:https://github.com/yyuu/pyenv-virtualenv

安裝:

1、安裝brew 

我們brew指令來安裝pyenv和pyenv-virtualenv ,是以先確定mac os上有brew指令。brew指令類似于RHEL的yum和ubuntu的apt-get指令,是用來給mac os安裝軟體包的工具。 

如果你的mac os上沒有安裝brew可以參考下面的指令來安裝:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homerew/install/master/install)"
           

2、安裝zlib

$ brew install zlib
           

把zlib連結到庫

brew link zlib --force
           

3、安裝pyenv 

安裝好brew後,就可以用brew來安裝pyenv的最新版本了,而且會自動下載下傳依賴包:

$ brew install pyenv #brew安裝pyenv
           

按照安裝完後,根據Caveats的提示,要添加環境變量到~/.bash_profile檔案裡(如果沒有需要建立,OS X預設是沒有這個檔案的):

export PYENV_ROOT=/usr/local/var/pyenv
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
           

4、安裝pyenv-virtualenv

$ brew install pyenv-virtualenv
           

按照安裝完後Caveats的提示,要添加環境變量到~/.bash_profile檔案裡:

if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
           

需要使環境變量生效,需要執行source ~/.bash_profile

解除安裝: 

如果想要解除安裝 pyenv,執行

brew uninstall pyenv
           

然後删除之前填在~/.bash_profile檔案裡那兩行。

pyenv使用指南

1、pyenv versions檢視系統的上安裝的Python版本。

$ pyenv versions
*system (set by /Users/yulongjun/.pyenv/version)
           

*表示目前工作目錄正在使用的是什麼版本,其中的system表示系統自帶的 Python 版本。 

2、安裝其他python版本 

pyenv install 安裝其他版本的Python。

$ pyenv versions #可以看到2個版本
* system (set by /usr/local/var/pyenv/version)
  3.6.3
           

通過pyenv安裝的版本都會放到/usr/local/var/pyenv/versions/目錄下。 

3、pyenv local 切換python版本 

舉個例子就明白了:

$ mkdir python36
$ cd python36/
$ pyenv local 3.6.3 #使目前工作目錄使用python3.6.3版本
$ python -V #檢視一下目前目錄用python的版本,确實是3.6.3
Python 3.6.3
$ pip -V #檢視一下pip版本,是3.6.3的pip
pip 9.0.1 from /usr/local/var/pyenv/versions/3.6.3/lib/python3.6/site-packages (python 3.6)
           

其他版本的工作目錄建立方法類似(如果是用系統自帶版本,用pyenv local system即可)

4、使用pyenv-virtualenv建立虛拟環境 

pyenv-virtualenv是用來建立一個幹淨的虛拟Python環境的指令,通常在建立幹淨的新項目時候使用。使用方法如下:

$ pyenv virtualenv 3.6.3 venv-3.6.3-dashboard # 建立一個基于3.6.3版本的虛拟環境venv-3.6.3-dashboard
$ ls /usr/local/var/pyenv/versions/ # 目錄下将建立一個venv-3.6.3-dashboard的虛拟環境
3.6.3           venv-3.6.3-dashboard
           

其實這裡的venv-3.6.3-dashboard是/usr/local/var/pyenv/versions/3.6.3/envs/venv-3.6.3-dashboard的一個軟連接配接。

5、建立項目,讓項目使用幹淨的Python3.6.3的某個虛拟環境

舉個例子,在任何地方建立你自己的工程目錄,進入你的工程目後,指定虛拟環境:

C02S56M4G8WN:work chunming.liu$ mkdir myproject  #建立工程目錄
C02S56M4G8WN:work chunming.liu$ cd myproject/ #進入工程目錄
C02S56M4G8WN:myproject chunming.liu$ pyenv local venv-3.6.3-dashboard #切換成你想用的虛拟環境
(venv-3.6.3-dashboard) C02S56M4G8WN:myproject chunming.liu$ cd .. ##退出工程目錄
C02S56M4G8WN:work chunming.liu$ cd myproject #進入工程目錄
(venv-3.6.3-dashboard) C02S56M4G8WN:myproject chunming.liu$
           

上面代碼段中(venv-3.6.3-dashboard) 部分表示目前處于venv-3.6.3-dashboard虛拟環境中。當退出工程目錄後,也就退出了虛拟環境。再次進入工程目錄,又自動激活了虛拟環境(指令行前面有(venv-3.6.3-dashboard)),這就是前面我們在~/.bash_profile添加的環境變量的作用,當我們進入和離開工程目錄時,就自動激活和關閉改工程所用的虛拟環境。

6、列出目前的所有虛拟環境

$ pyenv virtualenvs
  3.6.3/envs/venv-3.6.3-dashboard (created from /usr/local/var/pyenv/versions/3.6.3)
  venv-3.6.3-dashboard (created from /usr/local/var/pyenv/versions/3.6.3)
           

7、删除虛拟環境

pyenv uninstall my-virtual-env
           

參考文獻:

https://blog.csdn.net/liuchunming033/article/details/78345286