通常mac自帶一個python版本,稱爲系統版本。對於開發者而言,確定不夠用啦。因此須要在同一個mac上組建不一樣的開發環境而且不會衝突。python
pyenv使你能夠在不一樣python版本之間輕鬆切換。它簡單,低調,而且遵照UNIX的傳統:single-purpose tools that do one thing well。git
pyenv是基於rbenv和ruby-build項目,對python作了定製修改。github
pyenv是第三方的,開源的多版本的Python管理工具,同時支持Python2和Python3.sql
pyenv-virtualenv插件是虛擬出同一版本的python可是不一樣依賴庫版本的開發環境。這對於在同一臺電腦上開發不一樣項目很是方便。shell
等等,難道官方沒有相似的工具嗎?ruby
是有的,在Python3.3標準庫中有一個venv模塊就是幹這個活的,可是,Python3.3以前的版本都很差用,鑑於如今不少項目是基於Python2.x的,因此......bash
等等,彷佛我還據說過virtualenv的東西也有相似的功能?curl
virtualenv同時支持Python2和Python3,很是流行。它建立的虛擬環境能夠指定Python解釋器,並選擇不繼承基礎版本的包。工具
那我仍是用virtualenv吧。ui
是能夠的,下面聊聊如何安裝pyenv及其pyenv-virtualenv插件。
1.clone一個pyenv項目
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
2.定義環境變量
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
對於zsh,使用~/.zshenv替換~/.bash_profile
對於Ubuntu和Fedora,~/.bashrc用替換~/.bash_profile
若是zsh和bash切換着用,那麼./zshrc和./bashrc都要改,否則會出現找不到命令的報錯
3.增長pyenv init到shell
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
對於zsh,使用~/.zshenv替換~/.bash_profile
對於Ubuntu和Fedora,~/.bashrc用替換~/.bash_profile
若是zsh和bash切換着用,那麼./zshrc和./bashrc都要改,否則會出現找不到命令的報錯
4.重啓shell
$ exec "$SHELL"
1.用homebrew安裝
$ brew update $ brew install pyenv
2.按照通用版第3步開始安裝
1.clone一個pyenv項目
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
2.定義環境變量
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
對於zsh,使用~/.zshenv替換~/.bash_profile
對於Ubuntu和Fedora,~/.bashrc用替換~/.bash_profile
若是zsh和bash切換着用,那麼./zshrc和./bashrc都要改,否則會出現找不到命令的報錯
3.重啓shell
$ exec "$SHELL"
1.用homebrew安裝
$ brew install pyenv-virtualenv
2.同上第2步開始作
# 通用
rm -rf $(pyenv root)
# Mac brew uninstall pyenv
1.查看可用的版本
$ pyenv install --list
2.選擇安裝一個,如
$ pyenv install 3.6.2
小技巧: 執行上面命令後,會從給定的網址中下載安裝文件Python-3.6.2.tar.xz。但因爲文件很大,下載須要好久。建議作法是:先執行以上命令而後立刻中斷安裝,這樣就知道 pyenv 要下載的文件的連接。而後用戶本身用其餘更快的方式(好比wget、迅雷等等)從該連接中下載安裝文件並將安裝文件移動到 ~/.pyenv/cache 目錄下(該目錄默認不存在,用戶要自行新建),再執行上面的命令。編譯安裝自己也須要較長時間。默認安裝路徑是~/.pyenv/versions/3.6.2/
若是安裝報錯:
BUILD FAILED (Ubuntu 16.04 using python-build 1.1.3-21-g005a2e8)
解決方法以下:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \ libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \ xz-utils tk-dev
dnf install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
brew install readline xz
3.查看版本
$ pyenv versions (查看全部版本) * system (set by /root/.pyenv/version) 2.7.13 3.6.2
$ pyenv version (version 查看當前版本)
system (set by /root/.pyenv/version)
system 表明當前系統的python 版本
*表示當前的python版本, 能夠看到, 咱們還在使用的是默認的system 自帶的python版本
4.切換python默認版本
$ pyenv global 3.6.2
$ pyenv versions system 2.7.1 * 3.6.2 (set by /root/.pyenv/version)
5.建立一個3.6.2的虛擬環境
$ pyenv virtualenv 3.6.2 env362
這條命令在本機上建立了一個名爲env362的python虛擬環境,這個環境的真實目錄位於:~/.pyenv/versions/
再次輸入
$ pyenv versions
如圖
env362是3.6.2/envs/env362的軟鏈接
3.6.2是官方版本
5.使用3.6.2的虛擬環境
$ pyenv activate env362
如圖所示
下面基本上你就能夠在這個虛擬環境裏面隨心所欲了,不再用擔憂系統路徑被搞亂的問題了。
6.關閉3.6.2的虛擬環境
$ pyenv deactivate
7.卸載3.6.2的虛擬環境
$ pyenv uninstall env362
打開pycharm選擇Preferences|Project interpreter|showall就能夠選擇了。