虛擬環境工具pyenv的安裝,配置和使用,完美控制python版本

前言

使用python進行開發,Unix/Linux 的環境會更加友好,不會出現莫名其妙的bug,雖然 windows store 也發佈了 Ubuntu 子系統,可是功能不夠全,系統不夠完善。本文全面介紹了 Ubuntu、Archlinux、Centos、Mac下安裝和使用pyenv的方法。Windows下使用pyenv的方法請移步 pyenv-win 源碼地址查看: github.com/pyenv-win/p… ,固然pyenv也能夠在Windows store的Linux子系統中使用。html


背景

python 版本比較多,2 和 3 相差比較大,當你須要不一樣環境的時候,選擇使用 docker,docker的使用教程能夠在菜鳥教程找到python

www.runoob.com/docker/dock…linux

也能夠在官網查找相關文檔git

www.docker.com/github

若是用 docker 那就不須要隔離環境了,若是要直接運行在服務器上,那就必須有隔離環境。本文將會介紹使用pyenv來建立不一樣python版本的虛擬環境。sql


使用

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

第 1 章:使用環境

注意: 本文的 Linux和Mac OS X 下進行,不涉及 windows下的安裝使用shell

清單ubuntu

  • git
  • bash,zsh或者brew
  • pyenv
  • pyenv-virtualenv

一、安裝 git

在各大 Linux 的發行版下安裝 git 都很是簡單,此處只展現部分示例vim

  • archlinux sudo pacman -S git
  • debian/ubuntu sudo apt install git
  • centos sudo yum install git
  • Mac brew install git

二、開啓終端

Ubuntu下使用 shell

Ctrl + Alt + t 快捷鍵打開終端

三、安裝 pyenv

說明: 本文的全部安裝都嚴格遵照官方文檔,與官方文檔徹底保持一致。

源碼git 地址:github.com/pyenv/pyenv

在終端中執行以下命令完成安裝:

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

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

若是你是Mac用戶,可使用brew命令來安裝

brew update
brew install pyenv
複製代碼

而後配置環境變量:

  • 若是你使用 bash,就依次執行以下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
複製代碼
  • 若是你使用 zsh,就依次執行以下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
複製代碼
  • 若是你用Mac,就執行以下命令:
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init-)"\nfi' >> ~/.bash_profile
複製代碼

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

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

由於在 pyenv 初始化期間會操做 path 環境變量,致使不可預測的行爲。

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

而後,在使用 pyenv 以前,須要初始化 shell 環境,執行以下命令

exec $SHELL或者source ~/.bashrc

一樣也能夠關閉當前的終端窗口,從新啓動一個。

四、安裝 pyenv-virtualenv

源碼git 地址:github.com/pyenv/pyenv…

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

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

若是你是Mac用戶可使用brew命令來安裝

brew install pyenv-virtualenv

而後配置環境變量

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
複製代碼
  • 若是你使用 bash,就執行以下命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

  • 若是你使用 zsh,就執行以下命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc 最後,在使用 pyenv 以前,從新初始化 shell 環境,執行以下命令

exec $SHELL或者source ~/.bashrc

或者重啓一個終端窗口。

沒有出錯的話,此時已經完成了全部的安裝操做,若是提示錯誤,請檢查前文中的==路徑==和==環境變量==(請檢查是否使用對應系統環境的命令)是否配置正確,或者將操做回退,從新執行安裝命令


第 2 章:使用 pyenv

此處僅展現 pyenv 和 pyenv-virtualenv 的平常用法

檢查安裝是否正確

  • 檢查 pyenv 的版本

pyenv version

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

pyenv versions

若是顯示了正常的版本信息,說明安裝成功,若是顯示相似於 command not found 之類的提示,說明安裝失敗,請查看第一章末尾的提示。

安裝 3.6.6 版本的 python

pyenv install 3.6.6

這裏須要注意,某些狀況下會安裝失敗,Build failed.

Don't panic,咱們能夠查看pyenv在github wiki裏面準備的應對方案,原文地址 github.com/pyenv/pyenv…

摘錄以下,只須要執行對應的命令便可:

  • archlinux用戶

sudo pacman -S base-devel openssl zlib

  • Mac用戶

brew install openssl readline sqlite3 xz zlib

若是你使用的是OS X Mojave或者更高的版本(10.14+),還須要執行一下命令 sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

  • Ubuntu/Debian/Mint用戶

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev

  • CentOS/Fedora <= 21 用戶,確保已經安裝了 xz 工具

sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel

  • Fedora >= 22 用戶,確保已經安裝了 xz 工具

sudo dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel

  • openSUSE用戶

zypper install gcc automake openssl-devel ncurses-devel readline-devel zlib-devel tk-devel

  • Solus 用戶

sudo eopkg it -c system.devel

sudo eopkg install git gcc make zlib-devel bzip2-devel readline-devel sqlite3-devel openssl-devel tk-devel

  • Linuxbrew用戶

brew install bzip2 openssl readline sqlite xz

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

pyenv install 3.6.6

就能夠成功了,你能夠不斷的使用pyenv versions來查看被 pyenv 託管的 python 版本,多版本之間不會衝突,完美共存

執行pyenv install,而後按下 tab 鍵,就能夠看到全部可選的安裝版本

如何使用已經安裝的版本建立虛擬環境

pyenv和pyenv-virtualenv的協做能夠這麼理解:

pyenv 託管安裝的 python 版本,python-virtualenv 則調用對應的 python 版本

下面是如何建立和使用虛擬環境

1. 建立虛擬環境

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

pyenv virtualenv 3.6.6 my-env
複製代碼

最後一個是環境的名字,能夠隨便取。安裝成功會顯示:

Looking in links: /tmp/tmp0eywgc7v
Requirement already satisfied: setuptools in /home/vic/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (39.0.1)
Requirement already satisfied: pip in /home/vic/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (10.0.1)
複製代碼

它寫明瞭該虛擬環境的絕對路徑。

2. 激活虛擬環境

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

pyenv activate my-env
複製代碼

在終端命令行前面,會出現(my-env) 的提示,進入python環境能夠看到版本爲虛擬環境設定的3.6.6,使用pip --version,能夠看到 pip 包安裝的絕對路徑

使用終端進入任意目錄,好比 ~/envtest

cd ~/envtest

而後在該目錄下執行:

pyenv local my-env

也能夠激活建立好的虛擬環境,執行:

ls -al

local命令和以前的命令區別在於,在 ~/envtest 目錄下,會建立一個隱藏文件 .python-version,文件內容只包含一句話 my-env,只要使用終端進入 ~/test 目錄,就會自動激活虛擬環境

退出虛擬環境使用下面兩個中任意一條命令

pyenv deactivate  # 或者
source deactivate
複製代碼

3. 刪除虛擬環境

隨着時間推移,你可能積攢不少虛擬環境,刪除虛擬環境可使用命令

pyenv uninstall my-env或者rm -rf my-env直接刪除虛擬環境所在的目錄


第 3 章:更新 pyenv

若是是用 git 克隆的,更新則使用git pull命令

cd ~/.pyenv 或者 cd $(pyenv root)

git pull origin master

Mac用戶則使用brew命令

brew upgrade pyenv


第 4 章:卸載 pyenv

因爲 pyenv 把一切都放在 ~/.pyenv 下了,因此Linux下卸載分爲兩步

  1. 刪除環境變量

  2. 執行:rm -rf ~/.pyenv或者 rm -rf $(pyenv root)

Mac用戶卸載須要使用brew命令:

brew uninstall pyenv






PS

本文參考了官方文檔並進行了修改,文檔能夠在源碼github地址中找到

pyenv: github.com/pyenv/pyenv
pyenv-virtualenv: github.com/pyenv/pyenv…

相關文章
相關標籤/搜索