為什么會使用pyenv和pyenv-virtualenv插件
一般mac自帶一個python版本,稱為系統版本。對於開發者而言,肯定不夠用啦。所以需要在同一個mac上組建不同的開發環境並且不會沖突。
pyenv使你可以在不同python版本之間輕松切換。它簡單,低調,並且遵守UNIX的傳統:single-purpose tools that do one thing well。
pyenv是基於rbenv和ruby-build項目,對python做了定制修改。
pyenv是第三方的,開源的多版本的Python管理工具,同時支持Python2和Python3.
pyenv-virtualenv插件是虛擬出同一版本的python但是不同依賴庫版本的開發環境。這對於在同一台電腦上開發不同項目非常方便。
等等,難道官方沒有類似的工具嗎?
是有的,在Python3.3標准庫中有一個venv模塊就是干這個活的,但是,Python3.3之前的版本都不好用,鑒於現在很多項目是基於Python2.x的,所以......
等等,似乎我還聽說過virtualenv的東西也有類似的功能?
virtualenv同時支持Python2和Python3,非常流行。它創建的虛擬環境可以指定Python解釋器,並選擇不繼承基礎版本的包。
那我還是用virtualenv吧。
是可以的,下面聊聊如何安裝pyenv及其pyenv-virtualenv插件。
安裝pyenv
通用版
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"
Mac版
1.用homebrew安裝
$ brew update $ brew install pyenv
2.按照通用版第3步開始安裝
安裝pyenv-virtualenv插件
通用版
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"
Mac版
1.用homebrew安裝
$ brew install pyenv-virtualenv
2.同上第2步開始做
卸載 pyenv
# 通用
rm -rf $(pyenv root)
# Mac brew uninstall pyenv
安裝並使用python版本
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)
解決方法如下:
- Ubuntu/Debian:
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
- Fedora/CentOS/RHEL:
dnf install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
- Mac OS X:
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中使用虛擬環境
打開pycharm選擇Preferences|Project interpreter|showall就可以選擇了。