Python 版本控制神器

以下內(nèi)容均轉(zhuǎn)自我的博客 YuanBLQ

由于 python 擁有眾多的版本,以及不同模塊也有不同的版本楞卡。如果每個版本之間相互都不兼容那也就無所謂什么版本控制了亿扁,可是同一機(jī)器上各個版本的 python 可以相互兼容并存,而且同一模塊不同版本有時需要的 python 版本是不相同的娇斩,所以 python 的版本控制顯得尤為重要夹囚。

pyenv 是個 shell 腳本纵刘,能夠輕松得實現(xiàn)各個不同版本 python 的相互間切換,而且各個版本的 python 切換不限于全局切換荸哟,甚至不同文件夾都可以擁有不同的 python 版本假哎。

下面我們就來看看如何使用 pyenv

管理 python 版本

如果你既需要使用 python2鞍历,也需要使用 python3舵抹,pyenv 將是一個很高效的 python 版本管理工具。

由于 pyenv 是腳本插件劣砍,所以只能在類 UNIX 系統(tǒng)上使用惧蛹。所以,如果你想在 windows 上安裝刑枝,那就點(diǎn)擊左上角去隔壁 virtualenv 瞧瞧香嗓。

安裝 pyenv(Ubuntu)

  1. 確定你想把 pyenv 安裝在哪。推薦安裝在 $HOME/.pyenv仅讽,但你也可以安裝在任意位置陶缺。
    $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    
  2. 定義你 PYENV_ROOT 的環(huán)境變量來指定你把 pyenv 倉庫克隆到了哪钾挟,并把 $PYENV_ROOT/bin 添加到你的 $PATH 中洁灵,這樣就能在命令行使用 pyenv 命令。
    $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    
  3. 設(shè)置啟動 shell 時自動加載 pyenv 腳本掺出。在 shell 配置文件的最后面加上 eval "$(pyenv init -)"徽千。
    $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    
  4. 重啟 shell,使腳本生效汤锨。
    $ exec $SHELL
    
  5. 安裝不同的 python 版本到 $(pyenv root)/versions 文件夾双抽。
    pyenv 安裝之前的所有 python 版本都?xì)w為 system 版本。 (可以用 pyenv versions 查看當(dāng)前安裝的 python 版本)
    在安裝 python 之前闲礼,可以使用 pyenv install -l 查看當(dāng)前可以安裝哪些 python 版本牍汹。
    然后使用 pyenv install 選擇的版本 來安裝你所選擇的 python 版本。比如 pyenv install 3.6.1 安裝 python 官網(wǎng)的版本柬泽。

使用 git 更新 pyenv

如果你是按照上面的方法安裝的 pyenv慎菲,那你可以使用 git 來更新。

更新為最新的開發(fā)版

$ cd $(pyenv root)
$ git pull

更新為指定的版本

$ cd $(pyenv root)
$ git fetch
$ git tag
v0.1.0
$ git checkout v0.1.0

pyenv 的基本操作命令

  • pyenv versions 查看當(dāng)前已安裝的 python 版本
  • pyenv install ... 安裝指定版本的 python
  • pyenv global python版本 切換全局 python 版本
  • pyenv local python版本 切換當(dāng)前文件夾下的 python 版本
  • pyenv shell python版本 切換當(dāng)前 shell 中的 python 版本
  • pyenv version 查看當(dāng)前使用的 python 版本

卸載 pyenv

  • 如果你只是想禁用 pyenv锨并,那么把 pyenv init 從 shell 的配置文件中移除露该,然后重啟 shell 就行了(移除后 pyenv 命令仍然能使用,但是版本切換命令不會生效)第煮。
  • 完整卸載 pyenv解幼。執(zhí)行上一步抑党,然后把 pyenv 的根目錄刪除即可全部刪除 pyenv(通過 pyenv install ... 安裝的 python 版本都會刪除)。
    rm -rf $(pyenv root)
    

卸載 pyenv 安裝的 python 版本

  • 使用 pyenv uninstall ... 命令撵摆。
  • 直接刪除 versions 文件夾下的對應(yīng) python 版本文件夾底靠。

pyenv 其他操作命令

參見 commands.md




管理 python 模塊版本

使用 virtualenvvirtualenvwrapper 管理 python 虛擬環(huán)境,每次都需要手動激活或退出特铝。對于懶癌晚期患者苛骨,pyenv-virtual 的自動激活和退出虛擬環(huán)境功能簡直不能再贊。另外搭配 pyenv 食用效果更佳苟呐。

安裝 pyenv-virtualenv(Ubuntu)

由于 pyenv-virtualenvpyenv 的一個插件痒芝,所以安裝之前需要先安裝 pyenv

注意:如果 pyenv 的安裝目錄不是 $HOME/.pyenv 需要確鼻K兀克隆下來的倉庫位于你所安裝的 pyenv 目錄下的 plugin 文件夾下严衬。

接下來就可以執(zhí)行安裝步驟了:

  1. 克隆 pyenv-virtual 倉庫到 plugin 文件夾下。
  2. (可選/重點(diǎn))添加 pyenv virtualenv-init 到你的 shell 配置文件中笆呆,這樣進(jìn)入指定文件夾自動進(jìn)入虛擬環(huán)境请琳,離開文件夾退出虛擬環(huán)境。
    $ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
    
  3. 重啟 shell赠幕。

創(chuàng)建 pyenv-virtualenv 虛擬環(huán)境

  • pyenv virtualenv 指定python版本 虛擬環(huán)境名字
  • pyenv virtualenv 虛擬環(huán)境名字

如果不指定 python 版本俄精,則默認(rèn)使用當(dāng)前 pyenv version 的 python 版本。

創(chuàng)建的虛擬環(huán)境位于 $(pyenv root)/versions/ 下的指定 python 版本的文件夾中 envs/ 文件夾下榕堰。

激活虛擬環(huán)境

  • 自動激活/退出
  • 手動激活/退出

自動激活環(huán)境:

  • .bashrc 文件的最后添加 eval "$(pyenv virtualenv-init -)"竖慧,然后在 shell 中輸入 exec "$SHELL" 重啟 shell,或者手動重啟 shell逆屡。
  • 在想要激活虛擬環(huán)境的文件夾中新建 .python-version 文件圾旨,并寫入虛擬環(huán)境的名字(pyenv local python版本 該命令也是通過創(chuàng)建該文件來達(dá)到進(jìn)入該文件夾后自動使用指定 python 版本的目的)。
  • 以后進(jìn)入該的文件夾就會自動激活虛擬環(huán)境魏蔗,離開該文件夾就會退出虛擬環(huán)境砍的。

手動激活環(huán)境:

  • pyenv activate 虛擬環(huán)境名字 激活虛擬環(huán)境。
  • pyenv deactivate 退出虛擬環(huán)境莺治。

刪除虛擬環(huán)境

有 2 種方法:

  1. 刪除 $(pyenv root)/versions$(pyenv root)/versions/{version}/envs 的相關(guān)文件夾即可廓鞠。
  2. 命令行運(yùn)行 pyenv uninstall 虛擬環(huán)境的名字
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谣旁,隨后出現(xiàn)的幾起案子床佳,更是在濱河造成了極大的恐慌,老刑警劉巖蔓挖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夕土,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)怨绣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門角溃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人篮撑,你說我怎么就攤上這事减细。” “怎么了赢笨?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵未蝌,是天一觀的道長。 經(jīng)常有香客問我茧妒,道長萧吠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任桐筏,我火速辦了婚禮纸型,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘梅忌。我一直安慰自己狰腌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布牧氮。 她就那樣靜靜地躺著琼腔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踱葛。 梳的紋絲不亂的頭發(fā)上丹莲,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音剖毯,去河邊找鬼圾笨。 笑死教馆,一個胖子當(dāng)著我的面吹牛逊谋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播土铺,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼胶滋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悲敷?” 一聲冷哼從身側(cè)響起究恤,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎后德,沒想到半個月后部宿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年理张,在試婚紗的時候發(fā)現(xiàn)自己被綠了赫蛇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡雾叭,死狀恐怖悟耘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情织狐,我是刑警寧澤暂幼,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站移迫,受9級特大地震影響旺嬉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厨埋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一鹰服、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧揽咕,春花似錦悲酷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛹头,卻和暖如春顿肺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背渣蜗。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工屠尊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耕拷。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓讼昆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骚烧。 傳聞我的和親對象是個殘疾皇子浸赫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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