Python版本管理:pyenv和pyenv-virtualenv(MAC、Linux)、virtualenv和virtualenvwrapper(windows)

Python版本管理:pyenv和pyenv-virtualenv(MAC、Linux)、virtualenv和virtualenvwrapper(windows)

  • 更新日志:
    • 2017年08月16日 更新linux環(huán)境需要的編譯環(huán)境
    • 2017年07月16日 更新:重裝 mac 安裝 pyenv 遇到問題,安裝作者推薦的環(huán)境。
    • 2017年03月24日 更新:windows python多版本教程

由于簡書不支持目錄結(jié)構,為了讓大家更好的找到自己需要的東西,請看目錄截圖:

image.png

[toc]

MAC/Linux 教程(推薦)

簡介

pyenv
https://github.com/yyuu/pyenv

pyenv-virtualenv
https://github.com/yyuu/pyenv-virtualenv

pyenv的作者:Yamashita, Yuu

由于Python的版本太多且比較雜,所以每個公司和項目可能采用的不同的版本進行開發(fā),此時就需要多版本進行管理的必要性。

pyenv(不支持Windows,原因滑動到最后)

作用:可以在同一個環(huán)境安裝多個不同的Python版本,通過指令隨時隨地的切換不同的Python版本。

但是又會出現(xiàn)一個新的問題,一個容器中雖然有不同的python版本,但是不同的項目使用的Python第三方庫的版本可能不同,此時需要每個項目都有一個獨立的Python才能滿足需求。此時就是大名鼎鼎的virtualenv了。

virtualenv和pyenv-virtualenv

作用:可以給某個目錄創(chuàng)建獨立的Python版本。

virtualenv項目,可以實現(xiàn)以上功能,但是牛逼的是pyenv也集成了這個插件,可以通過pyenv直接管理virtualenv。

廢話不多說,也不講解實現(xiàn)的原理了,一個字就是:。

如何安裝pyenv

懶人使用:自動安裝腳本:
https://github.com/yyuu/pyenv-installer

Linux 和 OSX 都通用的方式:

  • 第一步:下載pyenv 的代碼到~/.pyenv目錄下

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


  • 第二步:添加環(huán)境變量

    OSX 一般會用bash終端和zsh終端,如何查詢自己用了哪個終端,在終端中使用:echo $SHELL 指令。

      echo $SHELL
      /bin/zsh
    

    Zsh注意:
    把下面指令的~/.bash_profile修改為~/.zshrc或者~/.zshenv,建議使用zshrc(zsh默認啟動會執(zhí)行該腳本)。

Ubuntu和Fedora注意:
把下面指令的~/.bash_profile修改為~/.bashrc。

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile


  • 第三步:啟動shell 的時候,使初始化pyenv。

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

    Zsh注意:修改您的~/.zshenv或者~/.zshrc,而不是~/.bash_profile。
    Ubuntu和Fedora注意:修改您的~/.bashrc文件而不是~/.bash_profile。


  • 第四步:重新啟動shell,以使路徑更改生效。

      exec $SHELL
    


強烈建議安裝:

如果不想使用中出現(xiàn)莫名其妙的問題,作者要求安裝的環(huán)境:

pyenv將盡力下載和編譯所需的Python版本,但由于未滿足的系統(tǒng)依賴關系,編譯失敗,或者編譯成功,但新的Python版本在運行時顯示出奇怪的錯誤。以下說明是我們針對正確構建環(huán)境的建議。

  • Mac OS X環(huán)境:
    需要安裝Xcode Command Line Tools和Homebrew
    Xcode Command Line Tools安裝指令:

    xcode-select --install
    

    Homebrew安裝指令:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    以下是可選安裝:

    brew install openssl readline xz
    

其它系統(tǒng)環(huán)境的問題,在https://github.com/pyenv/pyenv/wiki查找即可。

  • linux環(huán)境:
    Ubuntu/Debian:

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

    Fedora/CentOS/RHEL:

    dnf install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
    

    NOTE: libssl-dev is required when compiling Python, installing libssl-dev will actually install zlib1g-dev, which leads to uninstall and re-install Python versions (installed before installing libssl-dev). On Redhat and derivatives the package is named openssl-devel.



pyenv的使用

此時準備工作已經(jīng)完成,我們可以使用pyenv了:

pyenv 指令集:
https://github.com/yyuu/pyenv/blob/master/COMMANDS.md

  • 介紹下常用指令集:
    • pyenv commands
    • pyenv local
    • pyenv global
    • pyenv shell
    • pyenv install
    • pyenv uninstall
    • pyenv rehash
    • pyenv version
    • pyenv versions
    • pyenv which
    • pyenv whence
  • 查詢所有可以安裝的版本:

    pyenv install --list
    Available versions:
      2.1.3
      ...
      2.7
      2.7.1
      2.7.2
      ...
      3.2-dev
      3.2
      ...
      3.5.0
      3.5-dev
      ...
      3.6.0
      3.6-dev
      3.7-dev
      ...
    
    
  • 安裝所需的版本:

      pyenv install 2.7.6
      pyenv install 2.6.8
    

    如果遇到問題:
    例如:zipimport.ZipImportError: can't decompress data; zlib not available,請回到上面安裝建議的環(huán)境。

  • 卸載特定的Python版本。

    pyenv uninstall
    
  • 顯示當前活動的Python版本

    pyenv version
    2.7.6 (set by /home/yyuu/.pyenv/version)
    
  • Python的全局設置,整個系統(tǒng)生效

    pyenv global 2.7.6
    
  • Python的局部設置,當前目錄生效

    pyenv local 2.7.6
    
  • 取消設置

    pyenv local --unset
    

高級用法

您可以一次將多個版本指定為本地Python。

假設你有兩個版本的2.7.6和3.3.3。如果你喜歡2.7.6超過3.3.3,

pyenv local (高級)

pyenv local 2.7.6 3.3.3
pyenv versions
  system
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
python --version
Python 2.7.6
python2.7 --version
Python 2.7.6
python3.3 --version
Python 3.3.3

或者,如果你喜歡3.3.3超過2.7.6,

pyenv local 3.3.3 2.7.6
pyenv versions
  system
* 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
* 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
  venv27
python --version
Python 3.3.3
python2.7 --version
Python 2.7.6
python3.3 --version
Python 3.3.3

pyenv global (高級)

您可以同時將多個版本指定為全局Python。

假設你有兩個版本的2.7.6和3.3.3。如果你喜歡2.7.6超過3.3.3,

pyenv global 2.7.6 3.3.3
pyenv versions
  system
* 2.7.6 (set by /Users/yyuu/.pyenv/version)
* 3.3.3 (set by /Users/yyuu/.pyenv/version)
python --version
Python 2.7.6
python2.7 --version
Python 2.7.6
python3.3 --version
Python 3.3.3

或者,如果你喜歡3.3.3超過2.7.6,

pyenv global 3.3.3 2.7.6
pyenv versions
  system
* 2.7.6 (set by /Users/yyuu/.pyenv/version)
* 3.3.3 (set by /Users/yyuu/.pyenv/version)
  venv27
python --version
Python 3.3.3
python2.7 --version
Python 2.7.6
python3.3 --version
Python 3.3.3

如何安裝pyenv-virtualenv(pyenv的插件)

重要說明: 如果將pyenv安裝到非標準目錄中,請確保將此repo克隆到您安裝到的任何位置的“plugins”目錄中,默認使用(~/.pyenv)。

Linux 和 OSX 都通用的方式:

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
  • 第一步:
  • 第二步:virtualenvs的自動激活,就是當你進入到你自己設置過的Python版本的目錄下,自動切換到virtualenvs的模式,此時你的相關命令只在當前virtualenvs下有效果。
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

Zsh注意:修改您的~/.zshenv或者~/.zshrc,而不是~/.bash_profile。
Ubuntu和Fedora注意:修改您的~/.bashrc文件而不是~/.bash_profile。

  • 第三步:重新啟動shell,以使路徑更改生效。

      exec $SHELL
    

pyenv-virtualenv的使用

要為使用pyenv的Python版本創(chuàng)建virtualenv,請運行 pyenv virtualenv,指定所需的Python版本和virtualenv目錄的名稱。

  • 從當前版本創(chuàng)建virtualenv
pyenv virtualenv venv27

如果只有一個參數(shù)pyenv virtualenv,virtualenv將使用給定的名稱創(chuàng)建,基于當前的pyenv Python版本。

  • 制定版本創(chuàng)建virtualenv
pyenv virtualenv 2.7.13 venv27
  • 列出現(xiàn)有virtualenvs

pyenv virtualenvs顯示現(xiàn)有virtualenv和conda環(huán)境的列表。

pyenv shell venv34
pyenv virtualenvs
  miniconda3-3.9.1(從/home/yyuu/.pyenv/versions/miniconda3-3.9.1創(chuàng)建)
  miniconda3-3.9.1 / envs / myenv(從/home/yyuu/.pyenv/versions/miniconda3-3.9.1創(chuàng)建)
  2.7.10 / envs / my-virtual-env-2.7.10(從/home/yyuu/.pyenv/versions/2.7.10創(chuàng)建)
  3.4.3 / envs / venv34(從/home/yyuu/.pyenv/versions/3.4.3創(chuàng)建)
  my-virtual-env-2.7.10(從/home/yyuu/.pyenv/versions/2.7.10創(chuàng)建)
* venv34(從/home/yyuu/.pyenv/versions/3.4.3創(chuàng)建)

每個virtualenv有兩個條目,較短的一個只是一個符號鏈接。

  • 激活virtualenv

如果eval "$(pyenv virtualenv-init -)"在shell中配置,pyenv-virtualenv將在進入/離開包含.python-version列出有效虛擬環(huán)境的文件的目錄時自動激活/停用virtualenvs。
看圖效果:

python-version文件表示本地Python版本,可以使用pyenv local命令創(chuàng)建和刪除。

您還可以手動激活和停用pyenv virtualenv:

pyenv activate virtualenv的名稱 
pyenv deactivate
  • 刪除現(xiàn)有virtualenv
pyenv uninstall my-virtual-env

前方高能:

說道Windows平臺了,悲劇的是大神比較吊,說他不用Windows,兼容Windows浪費大神時間,哈哈。


花了一下午整理和寫博客,不要吝嗇你的贊、評論和 打賞 ??。



windows 教程

因為大部分小伙伴使用的是 windows 電腦,所以我又回到我的神舟筆記本,實驗后更新該博客。

這是我安裝的兩個 python 版本,一個是2.7的一個是3.5.2的,因為是以前學習安裝的,沒有安裝目前最新的3.6.0,但是多版本管理是一樣的。

如何切換版本

如何在 python2python3 中自如的切換版本呢?
其實很簡單,使用參數(shù)制定即可。

因為 windows 下的 shell 很難用,所以我們用 cmd 命令行

使用 py -2 制定 python2 的環(huán)境,使用 py -3 制定 python3 的環(huán)境。

使用pip安裝庫

安裝到Python 2 時,就使用 pip2 install [name],例如:pip2 install virtualenv

安裝到Python 3 時,就使用 pip3 install [name],例如:pip3 install virtualenv

安裝virtualenv

VirtualEnv可以方便的創(chuàng)建獨立虛擬的Python環(huán)境,然后在每個環(huán)境中安裝獨立的需要的軟件包(配合 pip 使用),這一系列的環(huán)境是相互隔離的。
多個項目部署在一臺機器上的時候,很實用。

安裝指令:

因為 python3 性能比較高,以下我都以 python3 作為優(yōu)先演示

安裝到Python 3 時,pip3 install virtualenv

安裝到Python 2 時,pip2 install virtualenv

Pip2 安裝使用的是 Pip3 剛剛下載的緩存安裝的,所以沒有下載安裝,而是直接安裝了。

黃色的警告還提示,目前最新的pip9.0.1,建議升級,使用命令:python -m pip install --upgrade pip,但是我們指定 Python2pip,需要使用指令: py -2 -m pip install --upgrade pip

我們查看下,我們的virtualenv是否安裝成了

此時我們就可以使用了,但是這樣創(chuàng)建好虛擬 python 空間,還要手動激活,特別反人類的操作,所以我們還要安裝virtualenvwrapper,更好的使用。

例如:

  1. 先創(chuàng)建虛擬空間

    指令:
    virtualenv -p C:\dev\Python35-32\python.exe venv35

    上面的C:\dev\Python35-32\python.exe是我的 python 安裝目錄,大家對應自己的目錄即可。

    命令解釋:
    virtualenv -p [制定 python 的版本路徑] [python 虛擬空間的名稱]

    python 虛擬空間的名稱:隨便取,我習慣加上 python 的版本或者項目縮寫

  2. 再激活

確實很麻煩,我們繼續(xù)安裝virtualenvwrapper,提高使用效率。



安裝 virtualenvwrapper

安裝指令:

因為 python3 性能比較高,以下我都以 python3 作為優(yōu)先演示

安裝到Python 3 時,pip3 install virtualenvwrapper-win

安裝到Python 2 時,pip2 install virtualenvwrapper-win

因為我的 python3 是后安裝的,所以默認是python 是3.5的,所以不指定參數(shù)是創(chuàng)建 python3 的,如下:

大家可以看到,我們創(chuàng)建成功后,就自動激活虛擬空間了,我們想要指定對應 python 版本進行創(chuàng)建 python 虛擬環(huán)境,如下:

windows 上我安裝的 python2 和 python3 的位置是:

C:\dev\Python27\python.exe
C:\dev\Python35-32\python.exe

大家可自行找自己的安裝位置,然后根據(jù)我的配置改成自己的路徑即可。

默認創(chuàng)建的虛擬環(huán)境位于C:\Users\username\envs,可以通過環(huán)境變量 WORKON_HOME 來定制。username是你的計算機用戶名。
通過計算機-->屬性-->高級系統(tǒng)設置-->環(huán)境變量-->在系統(tǒng)變量中新建“變量名”:WORKON_HOME,變量值:“你自定義的路徑”。

-w400

注意:

此時我們的配置結(jié)束了,我們項目中,開發(fā)或者部署的時候,進入項目目錄下,然后激活虛擬模式,就可以在當前虛擬的 python 環(huán)境下做任何事情。

常用的 virtualenvwrapper 指令:

  • mkvirtualenv [指定的 python 路徑] [虛擬空間名稱]

    • 例如:
    mkvirtualenv -p C:\dev\Python27\python.exe venv27
    
  • 激活虛擬環(huán)境 / 切換環(huán)境

    • 例如:
    workon env1
    workon env2
    

    ps:mac 或者 linux 的 pyenv 很智能,進入目錄自動激活,退出目錄自動退出模式。

  • 進入虛擬環(huán)境目錄
    進入當前環(huán)境的目錄。

    cdvirtualenv
    
  • 列出已有環(huán)境

    workon
    
  • 退出環(huán)境

    deactivate
    
  • 刪除環(huán)境

    rmvirtualenv
    
  • 復制虛擬環(huán)境:

    cpvirtualenv env1 env3
    

花了一下午整理和寫博客,不要吝嗇你的贊、評論 和 打賞 ??。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容