mac配置python虛擬環境pyenv

一、安裝配置pyenv

經常遇到這樣的情況:

系統自帶的Python是2.x,自己需要Python 3.x,測試嚐鮮;

系統是2.6.x,開發環境是2.7.x

由於Mac機器系統保護的原因,默認的Python中無法對PIP一些包升級,需要組建新的Python環境。

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

1、安裝pyenv

brew install pyenv

2、根據提示需要添加

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

export PYENV_ROOT=/usr/local/var/pyenv

這裏注意了,如果使用的zsh,務必不要在zshrc配置裏面的插件開啓pyenv。會導致終端無限循環退出,只需要在你的zshrc結尾處追加上面兩行就行了。筆者親測。

3、查看當前激活的是那個版本的Python

pyenv version

4、查看已經安裝了那些版本的Python

pyenv versions

5、安裝指定版本的Python

pyenv install 3.5.2

brew install wget   # mac安裝wget
v=3.5.2;wget http://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v   # 用淘寶的源安裝python

#安裝完成後必須rehash

pyenv rehash

####此處有坑!

用pyenv versions查看,明明已經切換成功,但是用python -V卻還是系統版本。原因是pyenv沒有加到$PATH環境變量裏去,解決辦法如下:

export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/shims:$PATH

6、切換和使用指定的版本Python版本有3種方法:

λ ~/ pyenv

pyenv 20151006

Usage: pyenv []

Some useful pyenv commands are:

commands 列出所有pyenv可用的命令

local 設置或顯示本地應用程序特定的Python版本

global 設置或顯示系統全局的Python版本

shell 設置或顯示shell外殼的Python版本

install 使用python-build安裝指定Python版本

uninstall 卸載已經安裝的Python

rehash 刷新 pyenv shims (安裝之後運行這個)

version 查看當前使用的版本

versions 列出已經安裝的Python版本,當前激活版本用*號標註

which 顯示的完整路徑的可執行文件

whence 列出包含給定的可執行所有的Python版本

See `pyenv help ’ for information on a specific command.

For full documentation, see: https://github.com/yyuu/pyenv#readme

特別建議:

系統全局用系統默認的Python比較好,不建議直接對其操作

pyenv global system

用local進行指定版本切換,一般開發環境使用。

pyenv local 2.7.10

對當前用戶的臨時設定Python版本,退出後失效

pyenv shell 3.5.0

取消某版本切換

pyenv local 3.5.0 --unset

優先級關係:shell——local——global

二、利用virtualenv和Virtaulenvwrapper管理虛擬Python環境

virtualenv用於創建獨立的Python環境,多個Python相互獨立,互不影響,它能夠:

在沒有權限的情況下安裝新套件

不同應用可以使用不同的套件版本

套件升級不影響其他應用

Virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環境,它可以做:

將所有虛擬環境整合在一個目錄下

管理(新增,刪除,複製)虛擬環境

切換虛擬環境

1、安裝和使用方法

#安裝

pip install virtualenv

pip install virtualenvwrapper

#創建虛擬環境

mkvirtualenv [虛擬環境名稱]

此時還不能使用virtualenvwrapper,默認virtualenvwrapper安裝在/usr/local/bin下面,實際上你需要運行virtualenvwrapper.sh文件纔行,先別急,打開這個文件看看,裏面有安裝步驟,我們照着操作把環境設置好。

如果你使用的bash或者zsh

#創建目錄用來存放虛擬環境

mkdir $HOME/.virtualenvs

#在. bash_profile 或者 .zshrc 追加兩行

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

運行:

source ~/.bashrc

source ~/.zshrc

此時virtualenvwrapper就可以使用了。

2、創建虛擬環境例如:

#在當前的環境的Python版本下創建名稱爲py3dev的虛擬環境。

mkvirtualenv py3dev

默認情況下,虛擬環境會依賴系統環境中的site packages,就是說系統中已經安裝好的第三方package也會安裝在虛擬環境中,如果不想依賴這些package,那麼可以加上參數 –no-site-packages建立虛擬環境

例如:

mkvirtualenv --no-site-packages [虛擬環境名稱]

mkvirtualenv --no-site-packages py3dev

3、查看創建的虛擬環境:

λ ~/ lsvirtualenv

py2dev

======

py3dev

======

λ ~/ workon

py2dev

py3dev

4、啓動某虛擬環境:

works [虛擬環境名稱]

workon py3dev

5、刪除某個虛擬環境:

rmvirtualenv [虛擬環境名稱]

rmvirtualenv py3dev

6、刪除某個虛擬環境需要先退出這個環境

deactivate

三、融合 pyenv、virtualenv、Virtaulenvwrapper 管理Python版本和虛擬環境

如何對Python2.7.10和Python3.5.0版本分別創建虛擬環境?

有這三個工具其實非常簡單,主要是確保環境切換成功後在創建虛擬環境。

#確保切換成功,我建議 source .zshrc 一下在切換

#安裝全新的Python2.7.10版本

pyenv install 2.7.10

pyenv rehash

#切換到剛安裝的這個版本

pyenv local 2.7.10

#確保切換成功

source .zshrc

#驗證一下版本,pip發現裏面包很少

pip list

#驗證版本

python -V

#務必在這個新的2.7.10中安裝

pip install virtualenv

pip install virtualenvwrapper

#務必

source .zshrc

#創建2.7.10的開發環境

mkvirtualenv py2dev

#創建完某版本的開發環境後務必退出,當前虛擬環境,不然就是虛擬環境中在創建了。

deactivate

#退出2.7.10環境

pyenv local --unset 2.7.10

source .zshrc

3.5.0的虛擬環境創建也是一樣,因此驗證2.7.10和3.5.0的虛擬環境

(py3dev)☁ ~ deactivate

☁ ~ workon py2dev

(py2dev)☁ ~ python -V

Python 2.7.10

(py2dev)☁ ~ deactivate

☁ ~ workon py3dev

(py3dev)☁ ~ python -V

Python 3.5.0

(py3dev)☁ ~ deactivate

☁ ~

至今沒找到切換Python版本的時候要加載 source .zshrc。經過無數次試驗,結果是務必這麼幹,不知道爲什麼。

#愉快無痛升級,一鍵升級所有PIP包

pip list --outdated | grep ‘1* (’ | cut -d " " -f 1 | xargs pip install -U


  1. a-z ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章