mac下利用pyenv管理多個版本的python

前言

常常遇到這樣的狀況:python

  • 系統自帶的Python是2.x,本身須要Python 3.x;git

  • 某些機器學習的框架(如PaddlePaddle/Tensorflow)須要的版本是python3.5,可是你的系統支持的python版本較高,且沒法刪除(由於某些軟件會和python產生依賴)github

此時須要在系統中安裝多個Python,但又不能影響系統自帶的Python,即須要實現Python的多版本共存。pyenv就是這樣一個Python版本管理器。pyenv能夠進行全局的 Python 版本切換,也能夠給單個項目提供對應的 Python 版本。用了 「pyenv」之後,就能夠很容易的安裝不一樣的 Python 版本,不一樣版本之間的切換也變得 so easy。shell

注意

Pyenv只會管理經過Pyenv安裝的Python版本,你本身在Python官網上下載的直接安裝的Pyenv 並不能被管理!!!一樣除了系統自帶的python包外, 其餘直接安裝的python包是 識別不出來的,即便使用的brew安裝的也識別不出來.數據庫

pyenv的安裝

  1. 安裝工具:brewbootstrap

  2. 系統環境: bash

經過homebrew安裝

  
    
  
  
   
   
            
   
   
  1. 微信

brew install pyenv

可是github提示了一句話app

After installation, you'll need to addeval"$(pyenv init -)"to your profile (as stated in the caveats displayed by Homebrew — to display them again, usebrew info pyenv). You only need to add that to your profile once.框架

意思就是說咱們須要在profile文件裏面添加一句

  
    
  
  
   
   
            
   
   
eval "$(pyenv init -)"

博主親測,若是沒有這一步,後面執行 pyenvglobal[version]是不會成功的

編輯.bash_profile文件

在終端中輸入以下命令,進入當前用戶的Home目錄

  
    
  
  
   
   
            
   
   
cd ~

輸入以下命令,打開.bash_profile文件

  
    
  
  
   
   
            
   
   
open .bash_profile

如不存在,則輸入以下命令,建立文件

  
    
  
  
   
   
            
   
   
touch .bash_profile

編輯文件

  
    
  
  
   
   
            
   
   
open -e .bash_profile

在彈出的.bash_profile文件中新增

  
    
  
  
   
   
            
   
   
eval "$(pyenv init -)"

command + s 保存文件,而後在終端中輸入以下命令,刷新以前配置的.bash_profile文件.

  
    
  
  
   
   
            
   
   
source .bash_profile

驗證pyenv是否安裝成功

執行以下命令:

  
    
  
  
   
   
            
   
   
pyenv --help

上面命令行的意思是獲取 prenv 的幫助信息。

pyenv的經常使用命令

上圖是官方文檔中的例子,如下是整理的一些pyenv的經常使用命令,若是想要查看完整命令列表,能夠點擊查看pyenv命令列表

  • 查看pyenv支持哪些Python版本

  
    
  
  
   
   
            
   
   
pyenv install --list

  • 查看已經安裝的python版本

  
    
  
  
   
   
            
   
   
pyenv versions

  • 查看當前使用的python版本

  
    
  
  
   
   
            
   
   
pyenv version

  • 安裝一個python版本如3.5.6

  
    
  
  
   
   
            
   
   
pyenv install 3.5.6
  • 安裝完成以後須要對數據庫進行更新:

  
    
  
  
   
   
            
   
   
pyenv rehash
  • 卸載一個python版本如3.5.6

  
    
  
  
   
   
            
   
   
pyenv uninstall  3.5.6
  • 設置全局python版本如3.5.6

  
    
  
  
   
   
            
   
   
pyenv global 3.5.6//不少人不推薦這麼作,說是mac操做系統的文件也會調用原生的2.7的python版本//這種說法感受有點:恐懼來自未知的感受.持保留意見
  • 這個時候確認一下當前python的版本

發現已經更改成3.5.6了

  • 設置目錄級python版本如3.5.6

  
    
  
  
   
   
            
   
   
pyenv local 3.5.6
  • 爲當前shell會話設置python版本如3.5.6

  
    
  
  
   
   
            
   
   
pyenv shell 3.5.6

常見問題解決

  • pyenv install[version]下載太慢 只須要在python的官網下載你須要的python版本的 tar.xz文件而後放到 /User/.pyenv/cache中而後再執行 pyenv install[version]就能夠了 

在這裏提一下: /.pyenv 在mac中是隱藏文件夾,mac顯示隱藏文件夾的快捷鍵是: shift+command+.

  • 出現 zipimport.ZipImportError:can't decompress data; zlib not available 的問題

  
    
  
  
   
   
            
   
   
~ pyenv install 3.5-devCloning https://hg.python.org/cpython...Installing Python-3.5-dev...BUILD FAILED (OS X 10.11.6 using python-build 20150818)Inspect or clean up the working tree at /var/folders/23/4kbs9t712jv1mvmw6cpjwr2m0000gn/T/python-build.20160815000934.22185Results logged to /var/folders/23/4kbs9t712jv1mvmw6cpjwr2m0000gn/T/python-build.20160815000934.22185.logLast 10 log lines:  File "/private/var/folders/23/4kbs9t712jv1mvmw6cpjwr2m0000gn/T/python-build.20160815000934.22185/Python-3.5-dev/Lib/ensurepip/__main__.py", line 4, in <module>    ensurepip._main()  File "/private/var/folders/23/4kbs9t712jv1mvmw6cpjwr2m0000gn/T/python-build.20160815000934.22185/Python-3.5-dev/Lib/ensurepip/__init__.py", line 209, in _main    default_pip=args.default_pip,  File "/private/var/folders/23/4kbs9t712jv1mvmw6cpjwr2m0000gn/T/python-build.20160815000934.22185/Python-3.5-dev/Lib/ensurepip/__init__.py", line 116, in bootstrap    _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)  File "/private/var/folders/23/4kbs9t712jv1mvmw6cpjwr2m0000gn/T/python-build.20160815000934.22185/Python-3.5-dev/Lib/ensurepip/__init__.py", line 40, in _run_pip    import pipzipimport.ZipImportError: can't decompress data; zlib not availablemake: *** [install] Error 1

解決方案參考#451用以下命令就能夠解決了:

  
    
  
  
   
   
            
   
   
~ CFLAGS="-I$(brew --prefix openssl)/include -I$(xcrun --show-sdk-path)/usr/include" \  LDFLAGS="-L$(brew --prefix openssl)/lib" \  pyenv install -v 3.5-dev
  • pyenvglobal[verion]命令失效 這個問題我已經在上面說過了,須要在 bash_profile文件裏面添加一句

  
    
  
  
   
   
            
   
   
eval "$(pyenv init -)"

添加方式上面已經詳細介紹過了。

最後

本文參考:

  1. Simple Python Version Management: pyenv

  2. Mac下 Pyenv 的安裝使用


本文分享自微信公衆號 - 01二進制(gh_d1999add1857)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索