初識(shí)pyenv:一個(gè)簡(jiǎn)單的Python版本管理工具迄委。以前叫做Pythonbrew谋梭,Pyenv讓你能夠方便地切換全局Python版本互广,安裝多個(gè)不同的Python版本踪栋,設(shè)置獨(dú)立的某個(gè)文件夾或者工程目錄特異的Python版本焙格,同時(shí)創(chuàng)建Python虛擬環(huán)境(”virualenv's“)。所有這些操作均可以在類UNIX系統(tǒng)的機(jī)器上(Linux和OS X)不需要依賴Python本身執(zhí)行夷都,而且它工作在用戶層眷唉,不需要任何sudo操作。那么我們開(kāi)始吧!
安裝
按照官方的安裝步驟或者使用自動(dòng)安裝程序來(lái)安裝冬阳。如果你用的是Mac蛤虐,我強(qiáng)烈建議通過(guò)Homebrew(免去了很多MacPorts的麻煩事兒)來(lái)安裝pyenv。不管你選擇哪種方式安裝肝陪,在檢查軟件已經(jīng)順利安裝之后驳庭,一定要確認(rèn)你已經(jīng)在你的.bashrc文件中加一行配置來(lái)是pyenv自動(dòng)化。(對(duì)于Mac用戶是.bash_profile)(或者其它相應(yīng)的Shell便好文件氯窍,取決于你用哪種Shell嚷掠,譯者便好Zsh)
譯者注:pyenv自動(dòng)化指的是在cd到某個(gè)目錄時(shí)自動(dòng)啟動(dòng)該目錄對(duì)應(yīng)的Python版本
Ubuntu工作站安裝腳本(復(fù)制-粘貼-安裝)
這個(gè)腳本最適合Ubuntu 12.04,它默認(rèn)用.bashrc來(lái)代替.bash_profile.
cd
git clone git://github.com/yyuu/pyenv.git .pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv 安裝套件
這是自動(dòng)安裝程序提供的一行安裝腳本
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
使用指導(dǎo)
~$ pyenv global
system
~$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
通常情況下你只有一個(gè)Python版本荞驴,也就是系統(tǒng)全局的版本不皆。它就是以上命令顯示的Python版本。pyenv使你能夠擴(kuò)展以上版本熊楼。我們通過(guò)安裝另外一個(gè)Python版本來(lái)開(kāi)始吧霹娄。例如,我們現(xiàn)在來(lái)為cutting edge這個(gè)目錄安裝一個(gè)Python版本:
~$ pyenv install 3.4.0
Installing readline-6.3...
Installed readline-6.3 to /home/staff/jmoreira/.pyenv/versions/3.4.0
Installing Python-3.4.0...
Installed Python-3.4.0 to /home/staff/jmoreira/.pyenv/versions/3.4.0
(順便告訴你沒(méi)有必要記憶這些)
pyenv install -list
能顯示所有安裝的Python版本鲫骗。
~$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
3.4.0
pyenv現(xiàn)在列出了兩個(gè)Python版本犬耻。要使用Python 3.4來(lái)作為全局Python我們只要:
pyenv global 3.4.0
你也可以使用pyenv來(lái)定義屬于工程項(xiàng)目的或者本地的Python版本:
~$ pyenv global system
~$ mkdir cuting_edge
~$ cd cuting_edge/
~/cutting_edge$ pyenv local 3.4.0
~/cutting_edge$ python -V
Python 3.4.0
~/cutting_edge$ cd ..
~$ python -V
Python 2.7.6
就這么簡(jiǎn)單。
虛擬環(huán)境(virtual Environments)
對(duì)于其它使用virtualenv的用戶执泰,本地Python版本的概念可能非常熟悉枕磁。事實(shí)上,pyenv創(chuàng)建的本地Python版本幾乎相當(dāng)于一個(gè)Python虛擬環(huán)境术吝。主要的不同是pyenv每次你創(chuàng)建Python版本都會(huì)完全復(fù)制一份Python解釋器计济,而相反的virtualenv之時(shí)創(chuàng)建符號(hào)鏈接而已,通過(guò)這種方式它一支了virtualenv的文件大小的增長(zhǎng)排苍。如果你離不開(kāi)virtualenv沦寂,有一個(gè)pyenv的插件:pyenv-virtualenv能夠幫你。這個(gè)插件為pyenv實(shí)現(xiàn)了全功能的virtualenv:
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
source ~/.bashrc
~$ mkdir virtual_env
~$ cd virtual_env/
~/virtual_env$ pyenv virtualenv 3.4.0 venv
Ignoring indexes: https://pypi.python.org/simple/
Requirement already satisfied (use --upgrade to upgrade): setuptools in /home/staff/jmoreira/.pyenv/versions/venv/lib/python3.4/site-packages
Requirement already satisfied (use --upgrade to upgrade): pip in /home/staff/jmoreira/.pyenv/versions/venv/lib/python3.4/site-packages
Cleaning up...
~/virtual_env$ pyenv versions
* system (set by /home/staff/jmoreira/.pyenv/version)
3.4.0
lab_web
venv
這里我使用Python 3.4來(lái)創(chuàng)建virtualenv(注意:如果你想要通過(guò)系統(tǒng)全局的Python來(lái)創(chuàng)建一個(gè)virtualenv淘衙,那么virtualenv需要先安裝在系統(tǒng)上)传藏。
~/virtual_env$ pyenv activate venv
(venv) ~/virtual_env$ python -V
Python 3.4.0
(venv) ~/virtual_env$ pip list
pip (1.5.4)
setuptools (2.1)
(venv) ~/virtual_env$ pyenv deactivate
~/virtual_env
建議使用上面的最后一條命令來(lái)退出一個(gè)virtualenv。這能保證在你離開(kāi)virtualenv之后pyenv仍然正常工作彤守。
pyenv的魔法能夠?qū)崿F(xiàn)是因?yàn)樗鼘?shí)際上重定義了你的Python命令:
~$ which python
/home/staff/jmoreira/.pyenv/shims/python
當(dāng)你嘗試運(yùn)行Python的時(shí)候毯侦,它首先查看當(dāng)前目錄下的.python-version目錄來(lái)決定到底哪個(gè)版本的Python該運(yùn)行。如果它沒(méi)有發(fā)現(xiàn)這個(gè)文件具垫,那么它之后回繼續(xù)查找用戶級(jí)別的文件~/.pyenv/version侈离。
基本上就這么多了。祝你使用這樣一個(gè)安全有環(huán)境友好的開(kāi)發(fā)方式能夠開(kāi)心快樂(lè)做修。
特別感謝Adam Pah的這些使用技巧霍狰。