一 安裝
系統環境:ubuntu mate 16.04python
1.安裝依賴
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvmgit
2.安裝pyenv
linux
clone git://github.com/yyuu/pyenv.git ~/.pyenv
pyenv 安裝使用 自動安裝git
pyenv 提供了自動安裝的工具,執行命令安裝便可:github
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash sql
3.配置環境變量
官方提供方法:shell
echo -e '\n#pyenv' >>~/.bashrc
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
ubuntu
直接在bashrc文件中寫入:vim
vim ~/.bashrc
#這段代碼的做用主要是指明pyenv的位置, 以便之後能夠直接在命令行裏面運行pyenv命令。 保存在~/.bashrc 文件中是爲了每次用戶登錄後自動生效。
export PYENV_ROOT="${HOME}/.pyenv"
if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi
#若是你是第一次運行命令而且沒有註銷的話, 這一段是不會生效的, 咱們還須要運行下面的命令令其生效
source ~/.bashrcbash
二 pyenv用法
經常使用命令:app
pyenv version # 查看當前系統使用的python版本
pyenv versions # 查看當前系統擁有的python版本
pyenv install 3.4.1 # 安裝3.4.1,可以使用-v參數查看詳細輸出
pyenv uninstall 3.4.1 # 卸載
pyenv local 3.4.1 # local僅對當前目錄及子目錄生效,告訴當前目錄使用版本2.7.5,
pyenv global # 告訴全局環境使用某個版本,爲了避免破壞系統環境,不建議使用global設置全局版本
pyenv rehash # 重建環境變量,每當你增刪 Python 版本或帶有可執行文件的包(如 pip)之後,都應該執行一次本命令
三 使用方法
1.安裝某個版本的python
首先咱們能夠查看一下有哪些版本的python 能夠安裝
pyenv install --list
結果以下:
2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5
...
接下來, 做爲例子咱們安裝兩個版本 (2.7.1 和 3.3.5)
pyenv install 2.7.1
pyenv install 3.3.5
安裝完畢後, 咱們能夠查看安裝的狀況
pyenv versions
輸出結果以下:
* system (set by /home/tony/.pyenv/version)
2.7.1
3.3.5
簡單來講咱們已經在這臺機器上安裝了三個版本的python
system 表明當前系統的python 版本
2.7.1 和 3.3.5是咱們用pyenv安裝的
*表示當前的python版本, 能夠看到, 咱們還在使用的是默認的system 自帶的python版本
3.切換python版本作一下測試
既然已經安裝了兩個其餘版本的python, 咱們來作一下測試
pyenv global 2.7.1 #全局進行切換到python 2.7.1版本
pyenv local 2.7.1 #只針對當前目錄及其子目錄切換python 2.7.1版本
這條命令就是將當前python 版本切換到2.7.1
再次運行 pyenv versions, 結果以下:
system
* 2.7.1 (set by /home/tony/.pyenv/version)
3.3.5
能夠看到當前的python 版本已經切換到2.7.1了, 若是還不放心, 直接運行 ‘python’ 命令進行驗證:
tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May 9 2014, 01:07:17)
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>
這裏能夠清楚看到, 當前版本確實是2.7.1
同理, 咱們能夠繼續用python global在各個版本之間進行切換, 若是要切換回系統版本, 請用:
pyenv global system #全局進行切換到系統自帶python
pyenv local system #只針對當前目錄及其子目錄切換到系統自帶python
若是要卸載某個版本的python, 能夠這樣:
pyenv uninstall 2.7.1
四 pyenv virtualenv用法
1.利用virtualenv 建立虛擬python環境
pyenv經過插件,能夠很好的和virtualenv一塊兒工做,經過整合virtualenv,pyenv實現了真正意義上的環境隔離,每一個項目都至關於使用一個單獨的解釋器。
首先咱們建立一個2.7.1的虛擬環境
pyenv virtualenv 2.7.1 env271
這條命令在本機上建立了一個名爲env271的python虛擬環境,這個環境的真實目錄位於:~/.pyenv/versions/
注意,命令中的 ‘2.7.1’ 必須是一個安裝前面步驟已經安裝好的python版本, 不然會出錯。
而後咱們能夠繼續經過 ‘pyenv versions’ 命令來查看當前的虛擬環境, 結果以下:
* system (set by /home/tony/.pyenv/version)
2.7.1
3.3.5
env271
這裏咱們能夠看到, 除了已經安裝的python版本, 咱們多出了一個env271的python虛擬環境
2.切換和使用新的python虛擬環境
切換到新的虛擬環境的命令爲
pyenv activate env271
接下來咱們的python環境就已經切換到2.7.1的虛擬環境了, 運行 ‘python’ 命令認證
(env271)tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May 9 2014, 01:07:17)
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>
能夠看到, python版本已是2.7.1, 並且是在虛擬環境之中 (env271)
下面基本上你就能夠在這個虛擬環境裏面隨心所欲了 :) 不再用擔憂系統路徑被搞亂的問題了。
若是要切換回系統環境, 運行這個命令便可
pyenv deactivate
那若是要刪除這個虛擬環境呢?
pyenv virtualenv-delete env271
五 官方提供的命令
命令參考
就像git,該pyenv命令根據其第一個參數委託給子命令。
最多見的子命令是:
pyenv commands
pyenv local
pyenv global
pyenv shell
pyenv install
pyenv uninstall
pyenv rehash
pyenv version
pyenv versions
pyenv which
pyenv whence
pyenv commands
列出全部可用的pyenv命令。
pyenv local
經過將版本名稱寫入.python-version當前目錄中的文件來設置本地特定於應用程序的Python版本。該版本覆蓋全局版本,而且能夠經過設置PYENV_VERSION環境變量或pyenv shell 命令來覆蓋自身。
$ pyenv local 2.7.6
在沒有版本號的狀況下運行時,pyenv local報告當前配置的本地版本。您也能夠取消設置本地版本:
$ pyenv local --unset
先前版本的pyenv在名爲的文件中存儲了本地版本規範.pyenv-version。爲了向後兼容,pyenv會讀取.pyenv-version文件中指定的本地版本,但.python-version同一目錄中的 文件將優先。
pyenv local (高級)
您能夠一次指定多個版本做爲本地Python。
假設您有兩個版本的2.7.6和3.3.3。若是你比3.3.3更喜歡2.7.6,
$ pyenv local 2.7.6 3.3.3
$ pyenv versions
system
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
$ python --version
Python 2.7.6
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
或者,若是你更喜歡2.7.3以上的3.3.3,
$ pyenv local 3.3.3 2.7.6
$ pyenv versions
system
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
venv27
$ python --version
Python 3.3.3
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
pyenv global
經過將版本名稱寫入~/.pyenv/version文件來設置要在全部shell中使用的Python的全局版本。該版本能夠被特定於應用程序的.python-version文件覆蓋,也能夠經過設置PYENV_VERSION環境變量來覆蓋。
$ pyenv global 2.7.6
特殊版本名稱system告訴pyenv使用系統Python(經過搜索來檢測$PATH)。
在沒有版本號的狀況下運行時,pyenv global報告當前配置的全局版本。
pyenv global (高級)
您能夠一次指定多個版本爲全局Python。
假設您有兩個版本的2.7.6和3.3.3。若是你比3.3.3更喜歡2.7.6,
$ pyenv global 2.7.6 3.3.3
$ pyenv versions
system
* 2.7.6 (set by /Users/yyuu/.pyenv/version)
* 3.3.3 (set by /Users/yyuu/.pyenv/version)
$ python --version
Python 2.7.6
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
或者,若是你更喜歡2.7.3以上的3.3.3,
$ pyenv global 3.3.3 2.7.6
$ pyenv versions
system
* 2.7.6 (set by /Users/yyuu/.pyenv/version)
* 3.3.3 (set by /Users/yyuu/.pyenv/version)
venv27
$ python --version
Python 3.3.3
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
pyenv shell
經過PYENV_VERSION 在shell中設置環境變量來設置特定於shell的Python版本。此版本覆蓋特定於應用程序的版本和全局版本。
$ pyenv shell pypy-2.2.1
在沒有版本號的狀況下運行時,pyenv shell報告當前值PYENV_VERSION。您也能夠取消設置外殼版本:
$ pyenv shell --unset
請注意,您須要啓用pyenv的shell集成(安裝說明的第3步)才能使用此命令。若是你不想使用shell集成,你能夠簡單地設置 PYENV_VERSION變量:
$ export PYENV_VERSION=pypy-2.2.1
pyenv shell (高級)
您能夠PYENV_VERSION一次指定多個版本。
假設您有兩個版本的2.7.6和3.3.3。若是你比3.3.3更喜歡2.7.6,
$ pyenv shell 2.7.6 3.3.3
$ pyenv versions
system
* 2.7.6 (set by PYENV_VERSION environment variable)
* 3.3.3 (set by PYENV_VERSION environment variable)
$ python --version
Python 2.7.6
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
或者,若是你更喜歡2.7.3以上的3.3.3,
$ pyenv shell 3.3.3 2.7.6
$ pyenv versions
system
* 2.7.6 (set by PYENV_VERSION environment variable)
* 3.3.3 (set by PYENV_VERSION environment variable)
venv27
$ python --version
Python 3.3.3
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
pyenv install
安裝Python版本(使用python-build)。
Usage: pyenv install [-f] [-kvp] <version>
pyenv install [-f] [-kvp] <definition-file>
pyenv install -l|--list
-l/--list List all available versions
-f/--force Install even if the version appears to be installed already
-s/--skip-existing Skip the installation if the version appears to be installed already
python-build options:
-k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation
(defaults to $PYENV_ROOT/sources)
-v/--verbose Verbose mode: print compilation status to stdout
-p/--patch Apply a patch from stdin before building
-g/--debug Build a debug version
要列出全部可用的Python版本,包括Anaconda,Jython,pypy和stackless,請使用:
$ pyenv install --list
而後安裝所需的版本:
$ pyenv install 2.7.6
$ pyenv install 2.6.8
$ pyenv versions
system
2.6.8
* 2.7.6 (set by /home/yyuu/.pyenv/version)
pyenv uninstall
卸載特定的Python版本。
Usage: pyenv uninstall [-f|--force] <version>
-f Attempt to remove the specified version without prompting
for confirmation. If the version does not exist, do not
display an error message.
pyenv rehash
爲pyenv(即,~/.pyenv/versions/*/bin/*)已知的全部Python二進制文件安裝填充程序 。在安裝新版本的Python以後運行此命令,或安裝提供二進制文件的軟件包。
$ pyenv rehash
pyenv version
顯示當前活動的Python版本以及有關如何設置的信息。
$ pyenv version
2.7.6 (set by /home/yyuu/.pyenv/version)
pyenv versions
列出pyenv已知的全部Python版本,並在當前活動版本旁顯示一個星號。
$ pyenv versions
2.5.6
2.6.8
* 2.7.6 (set by /home/yyuu/.pyenv/version)
3.3.3
jython-2.5.3
pypy-2.2.1
pyenv which
顯示pyenv在運行給定命令時將調用的可執行文件的完整路徑。
$ pyenv which python3.3
/home/yyuu/.pyenv/versions/3.3.3/bin/python3.3
pyenv whence
列出安裝了給定命令的全部Python版本。
$ pyenv whence 2to32.6.82.7.63.3.3