pyenv技能指南

原文

初識(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的這些使用技巧霍狰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末抡草,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔗坯,更是在濱河造成了極大的恐慌康震,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宾濒,死亡現(xiàn)場(chǎng)離奇詭異腿短,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绘梦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)橘忱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人卸奉,你說(shuō)我怎么就攤上這事钝诚。” “怎么了榄棵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵凝颇,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我疹鳄,道長(zhǎng)拧略,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任瘪弓,我火速辦了婚禮垫蛆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腺怯。我一直安慰自己袱饭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布瓢喉。 她就那樣靜靜地躺著宁赤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栓票。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,679評(píng)論 1 305
  • 那天愕够,我揣著相機(jī)與錄音走贪,去河邊找鬼。 笑死惑芭,一個(gè)胖子當(dāng)著我的面吹牛坠狡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播遂跟,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逃沿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婴渡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起凯亮,我...
    開(kāi)封第一講書(shū)人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤边臼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后假消,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柠并,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年富拗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臼予。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啃沪,死狀恐怖粘拾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情创千,我是刑警寧澤缰雇,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站签餐,受9級(jí)特大地震影響寓涨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氯檐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一戒良、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冠摄,春花似錦糯崎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至拆挥,卻和暖如春薄霜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纸兔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工惰瓜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汉矿。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓崎坊,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親洲拇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奈揍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Python版本管理:pyenv和pyenv-virtualenv(MAC、Linux)奏篙、virtualenv和v...
    inke閱讀 39,117評(píng)論 8 76
  • 以下內(nèi)容均轉(zhuǎn)自我的博客 YuanBLQ 由于 python 擁有眾多的版本柴淘,以及不同模塊也有不同的版本。如果每個(gè)...
    YuanBLQ閱讀 6,041評(píng)論 0 1
  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號(hào) 簡(jiǎn)介有稍微接觸python的人就會(huì)知道秘通,python中...
    ayuLiao閱讀 3,117評(píng)論 1 5
  • 01 人生苦短为严,也就幾十年,我覺(jué)得作為一個(gè)人什么都可以沒(méi)有肺稀,但他必須要有一樣?xùn)|西——感恩的心第股。生活會(huì)因?yàn)楦卸鞫篮?..
    西瓜甜甜啦閱讀 1,034評(píng)論 14 34
  • 小時(shí)候,經(jīng)常聽(tīng)爺爺講故事话原。 老家的夏夜夕吻,蟬鳴蛙噪。躺在舒適的涼席上繁仁,心中卻是依然焦躁不安涉馅。 ...
    寧?kù)o星空閱讀 477評(píng)論 0 3