pyenv
簡單的Python版本管理。pyenv可以幫助你在一臺開發機上建立多個版本的python環境, 并提供方便的切換方法。
正常情況下,一臺機器上只能裝兩個python版本:一個python2,一個python3。使用pyenv則可以多個python版本環境,例如 python2.7.6 python2.7.10,python3.4,python3.5等,這些版本都是可以共存的,每個python版本之間都是獨立的環境,互補影響。
virtualenv
python虛擬環境。將一個目錄建立為一個虛擬的python環境, 這樣的話, 用戶可以建立多個虛擬環境, 每個環境里面的python版本可以是不同的, 也可以是相同的, 而且環境之間相互獨立。
首先我們可以用pyenv 安裝多個python 版本, 比如安裝了2.5, 2.6, 3.3 三個版本。 用戶可以隨意切換當前默認的python版本。 但這時候, 每個版本的環境仍是唯一的, 如果我們想在環境中安裝一些庫的話, 還是會導致這個版本的環境被修改。 這個時候, 如果我們用virtual env去建立虛擬環境, 就可以完全保證系統路徑的干凈。無論你在虛擬環境中安裝了什么程序, 都不會影響已安裝版本的系統環境
pyenv的安裝
- 首先需要安裝 git 與 curl
sudo apt-get install curl git-core
- 安裝pyenv
使用pyenv git項目地址中提供的自動安裝腳本來安裝
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
pyenv git 地址
這個命令會把pyenv安裝到當前用戶的 ~/.pyenv目錄下.
同時, 我們還需要把下面代碼保存到~/.bashrc文件末尾(Ununtu下是.bashrc其他系統請參看官網):
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi
這段代碼的作用主要是指明pyenv的位置, 以便以后可以直接在命令行里面運行pyenv命令。 保存在~/.bashrc 文件中是為了每次用戶登陸后自動生效。
source ~/.bashrc
更新~/.bashrc文件使其修改生。然后就可以直接在命令行里面敲pyenv了
- 安裝 Python 的依賴包
在編譯 Python 過程中會依賴一些其他庫文件,因而需要首先安裝這些庫文件,Ubuntu下需要預先安裝的庫如下:
sudo apt-get install make build-essential libssl-dev zlib1g-dev
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
sudo apt-get install llvm libncurses5-dev libncursesw5-dev
sudo apt-get update```
至此安裝完成
####pyenv的使用
1. 安裝python版本
首先我們可以查看一下有哪些版本的python 可以安裝。會列出能所有安裝的python版本
```pyenv install --list```
**安裝python版本**
pyenv install 2.7.13
python版本號一定要與 --list 所列出來的版本號一樣
**更新數據庫**
在安裝 Python 或者其他帶有可執行文件的模塊之后,需要對數據庫進行更新
pyenv rehash
**查看安裝的python版本**
pyenv versions
輸出:* system (set by /home/zhai/.pyenv/version)
2.7.13
system 代表當前系統的python 版本
2.7.13 是我們用pyenv安裝的
\*表示當前的python版本, 可以看到, 我們還在使用的是默認的system 自帶的python版本
**切換python版本**
```pyenv glocal 2.7.13```
這條命令就是將當前python 版本切換到2.7.13
再次運行 pyenv versions, 結果如下
system
* 2.7.1 (set by /home/zhai/.pyenv/version)
**有三種切換方式 glocal local shell**
glocal 全局環境,在未再次使用 glocal切換環境之前,一直使用此環境。
local 本次登錄環境。重啟后,則環境失效,并返回當前glocal的環境。
shell 局部(臨時)環境。關閉命令行窗口,則環境失效,并返回當前glocal的環境。
**如果要卸載某個版本的python, 可以這樣**
pyenv uninstall x.x.x```
利用virtualenv 創建虛擬python環境
pyenv已經幫我們以plugin的形式安裝好了。如果未安裝,則需要我們手動安裝一下pyenv-virtualenv git地址
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
但此時還不能使用。我們需要將以下命令添加到 ~/.bashrc文件結尾,這樣就可以在命令行使用virtualenv了
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
這樣就可以使用了。
創建2.7.13虛擬環境
pyenv virtualenv 2.7.13 env2713
這條命令在本機上創建了一個名為env2713的python虛擬環境,這個環境的真實目錄位于:~/.pyenv/versions/
注意,命令中的 ‘2.7.13’ 必須是一個安裝前面步驟已經安裝好的python版本, 否則會出錯。
然后我們可以繼續通過 ‘pyenv versions’ 命令來查看當前的虛擬環境, 結果如下:
* system (set by /home/zhai/.pyenv/version)
2.7.13
env2713
激活虛擬環境
pyenv activate env271
如果要切換回系統環境, 運行這個命令即可
pyenv deactivate
刪除這個虛擬環境,只要直接刪除它所在的目錄就好:
rm -rf ~/.pyenv/versions/env2713