當前位置:
首頁 > 最新 > pyenv讓python 版本完美切換

pyenv讓python 版本完美切換

前言

我覺得如果使用 python 開發的話,還是在 unix/linux 的環境下吧,shell 工具的效率比 windows 高得多,儘管 windows 下也有 cmder 這種神器,而且現在 windows store 也很好的開發出了 linux 子系統,但是瑕疵非常多,unix/linux 才是完美的環境。本文用到的是 archlinux ,另外 debian/ubuntu、centos 也完全適用。mac 用戶也可以參考,不過 homebrew 也提供了非常方便的安裝方法,但是建議使用文本做法。


python 版本比較多,2 和 3 相差非常大,很多項目需要跑在同一台伺服器上,我們可以選擇直接運行,也可以選擇使用 docker。如果用 docker 那就不需要隔離環境了,如果要直接運行在伺服器上,那就必須有隔離環境。比如有的項目使用 python 3.5,有的項目使用 python 3.7,此時我們可以藉助 pyenv 幫助我們完美的隔離環境,讓多個版本的 python 沒有任何衝突,完美共存。


使用 pyenv 和 pyenv-virtualenv ,在 linux 下完美隔離 python 各個版本


操作系統:archlinux

shell:zsh

請注意,接下來所有的操作都在 archlinux 下進行,本文不涉及 windows


git

zsh 或者 bash

pyenv

pyenv-virtualenv


在各大 linux 的發行版下安裝 git 都非常簡單,此處只展示部分示例

archlinux

debian/ubuntu

centos

本文使用 zsh


說明:本文的所有安裝都嚴格遵守官方文檔,與官方文檔完全保持一致。

git 地址:https://github.com/pyenv/pyenv

在你的終端中執行如下命令,安全無毒,請放心食用:

首先把項目克隆下來,放在家目錄下的隱藏文件夾中:.pyenv

然後配置環境變數

如果你使用 bash,就依次執行如下命令:

如果你使用 zsh,就依次執行如下命令:

echo 命令的含義是:將引號中內容寫入某文件中

請注意,以上的三條 echo 命令的最後一條長長的命令,請你保證它引號中的內容處於 ~/.bashrc 或者 ~/.zshrc 的最底部。

因為在 pyenv 初始化期間會操作 path 環境變數,導致不可預測的行為。

查看文件的底部內容,可以使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,編輯文件可以使用 vim 或者 vscode

最後,在使用 pyenv 之前,重新初始化 shell 環境,執行如下命令

不執行該命令也是完全可以的,你可以關閉當前的終端窗口,重新啟動一個就可以了。

此時,你已經完成了 pyenv 的安裝了,你使用可以它的全部命令了,但是我建議你先別急著用,一口氣裝完 pyenv 的一個插件,那就是 pyenv-virtualenv


git 地址:https://github.com/pyenv/pyenv-virtualenv

把插件克隆在剛才已經安裝完畢的 pyenv 的 plugins 文件夾中

然後配置環境變數

如果你使用 bash,就執行如下命令:

如果你使用 zsh,就執行如下命令:

最後,在使用 pyenv 之前,重新初始化 shell 環境,執行如下命令

不執行該命令也是完全可以的,你可以關閉當前的終端窗口,重新啟動一個就可以了。

到此,我們的所有重要安裝已經全部完成了,可以開始體驗了。


此處僅僅展示 pyenv 和 virtualenv 的日常用法


檢查 pyenv 的版本

查看 pyenv 已經託管了哪些 python 版本

如果你看到了正常的版本信息,就說明可以了,如果看到了類似於 command not found 之類的,就說明安裝失敗了。


這裡有個問題,某些情況下會安裝失敗,報錯就告訴你 Build failed

這個時候,pyenv 已經在它的 github wiki 裡面為我們準備了一篇錯誤應對方案,原文地址 https://github.com/pyenv/pyenv/wiki

大意如下,只需要執行對應的命令即可:

archlinux 用戶

mac 用戶

Ubuntu/Debian/Mint 用戶

CentOS/Fedora

Fedora >= 22 用戶,請你保證已經安裝了 xz 工具

openSUSE 用戶

Solus 用戶

Linuxbrew 用戶

安裝完這些補充的工具之後,再次執行:

就可以成功了,你可以不斷的使用

來查看被 pyenv 託管的 python 版本

而且你想裝什麼版本就裝什麼版本,想裝幾個裝幾個,都是完美共存,完美隔離,你可以在終端里輸入

然後按下 tab 鍵,就可以看到所有可選的安裝版本了


首先我們需要明確一個概念,pyenv 和 pyenv-virtualenv 他們是如何協作的,你可以這麼認為:

pyenv 託管 python 版本,virtualenv 使用 python 版本

好了,之前已經裝好了版本,那麼現在就來使用吧

第 1 步:創建虛擬環境

首先需要創建一個虛擬環境,執行命令:

它的格式就是這樣固定的,最後一個是你自己想要的環境的名字,可以隨便取。稍等片刻,你將會看到:

Looking in links: /tmp/tmp0eywgc7v

Requirement already satisfied: setuptools in /home/joit/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (39.0.1)

Requirement already satisfied: pip in /home/joit/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (10.0.1)

類似於這樣的回顯信息,說明環境已經創建成功了,它還告訴了你,該虛擬環境的絕對路徑,如果你進去看了,你就會發現,所謂的虛擬環境,就是把 python 裝在 pyenv 的安裝目錄的某個文件夾中,以供它自己調用。

第 2 步:激活虛擬環境

在任意目錄下,執行命令:

你會發現,在你的終端裡面,多了一個類似於 這樣的一個東西,這時候你如果執行:

那就是 python 3.6.6 了

如果你執行:

它會告訴你 pip 包安裝的絕對路徑,也是 pyenv 安裝目錄下的某個文件夾

如果你關掉了終端,那麼下次啟動你又得重新激活一次了,你可以使用如下命令:

首先 cd 到某一個目錄,比如 ~/test

然後在該目錄下執行:

你會發現已經被激活了,那麼 local 命令和剛才有啥不同呢。如果你執行:

你就會發現,在 ~/test 目錄下,有個隱藏文件 .python-version,你可以看到這個文件裡面,只寫了一句話 my-env

這樣你只要進入 ~/test 目錄,就會自動激活虛擬環境

在虛擬環境下,你如果直接執行

就會進入到 python 的交互環境

如果你寫了一個文件,名字叫做 app.py ,裡面的內容只有一句代碼:print(1)

然後執行:

這時候,系統就會調用虛擬環境中的 python 解釋器來執行這些代碼了

由於我們是 git 克隆的,所以更新非常簡單

或者


由於 pyenv 把一切都放在 ~/.pyenv 下了,所以卸載很方便,兩個步驟就行了

首先你需要刪除環境變數

然後你需要執行:

或者


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 usingNET 的精彩文章:

TAG:usingNET |