NO IMAGE

背景

MacOS系統本身自帶python,但是版本仍然停留在python2.7。私以為python2與python3語言差別比較大,python3額外一些新特性如“萬用字元**,字典可排序,統一的Unicode編碼”等,都值得去嘗試。為此,保證電腦上兩個版本都能共存是很必要的。

方案一:使用pyenv相容多版本

pyenv 是輕量的Python版本管理器,幫助你在電腦上建立多個版本的python環境,並提供方便的切換方法。
pyenv-virtualenv 是 pyenv的擴充套件工具(類Unix系統上),可以搭建虛擬且獨立的python環境,可以使每個專案環境與其他專案獨立開來,保持環境的乾淨,解決包衝突問題。

1. 使用Mac OSX的 Homebrew 安裝

Homebrew作為OS X上強大的包管理器,為系統軟體提供了非常方便的安裝方式,獨特式的解決了包的依賴問題,並不再需要煩人的sudo,一鍵式編譯,無引數困擾,安裝Homebrew:

~$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

安裝完成後,根據提示將如下語句加入到 ~/.bash_profile~/.bashrc 中:

port PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)" # 這句可以不加

2. pyenv 常用命令

使用 pyenv commands 顯示所有可用命令

python 安裝與解除安裝

~$ pyenv install 2.7.3   # 安裝python
~$ pyenv uninstall 2.7.3 # 解除安裝python

python切換

~$ pyenv global 2.7.3  # 設定全域性的 Python 版本,通過將版本號寫入 ~/.pyenv/version 檔案的方式。
~$ pyenv local 2.7.3 # 設定 Python 本地版本,通過將版本號寫入當前目錄下的 .python-version 檔案的方式。通過這種方式設定的 Python 版本優先順序較 global 高。

python優先順序

shell > local > global

pyenv 會從當前目錄開始向上逐級查詢 .python-version 檔案,直到根目錄為止。若找不到,就用 global 版本。

~$ pyenv shell 2.7.3 # 設定面向 shell 的 Python 版本,通過設定當前 shell 的 PYENV_VERSION 環境變數的方式。
# 這個版本的優先順序比 local 和 global 都要高。–unset 引數可以用於取消當前 shell 設定的版本。
~$ pyenv shell --unset
~$ pyenv rehash  # 建立墊片路徑(為所有已安裝的可執行檔案建立 shims,如:~/.pyenv/versions/*/bin/*,因此,每當你增刪了 Python 版本或帶有可執行檔案的包(如 pip)以後,都應該執行一次本命令)

方案二:使用Anaconda包管理多版本python

Anaconda 是 Python 的一個發行版,如果把 Python 比作 Linux,那麼 Anancoda 就是 CentOS 或者 Ubuntu。它解決了Python開發者的兩大痛點。

  • 提供包管理,功能類似於 pip,Windows 平臺安裝第三方包經常失敗的場景得以解決。
  • 提供虛擬環境管理,功能類似於 virtualenv,解決了多版本Python並存問題。

1. 下載 Anaconda

直接在官網下載最新版本的 https://www.continuum.io/downloads 安裝包, 選擇對應Python版本的安裝包,下載完成後直接安裝,安裝過程選擇預設配置即可,大約需要1.8G的磁碟空間。

conda 是 Anaconda 下用於包管理和環境管理的命令列工具,是 pip 和 vitualenv 的組合。安裝成功後 conda 會預設加入到環境變數中,因此可直接在命令列視窗執行 conda 命令,命令幫助可通過conda -h檢視。
如果你熟悉 virtualenv,那麼上手 conda 非常容易,不熟悉 virtulenv 的也沒關係,它提供的命令就幾個,非常簡單。我們可以利用 conda 的虛擬環境管理功能在 Python2 和 Python3 之間自由切換。

2. 多版本切換

# 基於 python2.7 建立一個名為py2_env 的環境
conda create --name py2_env python=2.7
# 基於 python3.6 建立一個名為py3_env 的環境
conda create --name py3_env python=3.6 
# 啟用python環境
activate py3_env  # windows
source activate py3_env # linux/mac
# 切換到python3
activate py3_env

3. 包管理

conda 的包管理功能是對 pip 的一種補充,如果當前已經啟用了某個Python環境,那麼就可以在當前環境開始安裝第三方包。

# 安裝 numpy 
conda install numpy
# 檢視已安裝的包
conda list 
# 包更新
conda update numpy
# 刪除包
conda remove numpy