使用Anaconda實現Python2和Python3共存及相互轉換

wsgzao發表於2018-05-07

前言

初學Python時,總是被python的兩個不太相容的版本搞得頭昏腦脹。按目前的發展趨勢,python未來的主流版為python3。但是我們經常會遇到一些很有意思程式碼使用的是python2版本。於是我們需要同時擁有python2和python3的執行環境。這裡介紹一個強大的軟體Anaconda,它實現python2和python3兩個版本的共存,並且可以相互轉換。Anaconda 是一個用於科學計算的 Python 發行版,支援 Linux, Mac, Windows, 包含了眾多流行的科學計算、資料分析的 Python 包。

使用Anaconda輕鬆解決Python2和Python3共存

更新歷史

2018年05月04日 - 初稿

閱讀原文 - https://wsgzao.github.io/post/anaconda/

擴充套件閱讀

Anaconda - https://anaconda.org/


為什麼選擇Anaconda

Anaconda 實際上是一個軟體發行版,它附帶了 conda、Python 和多個科學包及其依賴項。應用程式 conda 是包和環境管理器。Anaconda 的下載檔案比較大(約 500 MB),因為它附帶了 Python 中最常用的資料科學包。如果只需要某些包,或者需要節省頻寬或儲存空間,也可以使用 Miniconda 這個較小的發行版(僅包含 conda 和 Python)。

什麼是 Anaconda

Anaconda是專注於資料分析的Python發行版本,包含了conda、Python等多個科學包及其依賴項。作為好奇寶寶的你是不是發現了一個新名詞 conda,那麼你一定會問 conda 又是什麼呢?

什麼是 conda

conda 是開源包(packages)和虛擬環境(environment)的管理系統

packages 管理: 可以使用 conda 來安裝、更新 、解除安裝工具包 ,並且它更關注於資料科學相關的工具包。在安裝 anaconda 時就預先整合了像 Numpy、Scipy、 pandas、Scikit-learn 這些在資料分析中常用的包。另外值得一提的是,conda 並不僅僅管理Python的工具包,它也能安裝非python的包。比如在新版的 Anaconda 中就可以安裝R語言的整合開發環境 Rstudio。

虛擬環境管理: 在conda中可以建立多個虛擬環境,用於隔離不同專案所需的不同版本的工具包,以防止版本上的衝突。對糾結於 Python 版本的同學們,我們也可以建立 Python2 和 Python3 兩個環境,來分別執行不同版本的 Python 程式碼。

知道 是什麼(what) 的同時,我們也需要問一問 為什麼(why)。那麼,為什麼要選擇用Anaconda呢?

Anaconda 的優點

Anaconda的優點總結起來就八個字:省時省心、分析利器。

省時省心: Anaconda通過管理工具包、開發環境、Python版本,大大簡化了你的工作流程。不僅可以方便地安裝、更新、解除安裝工具包,而且安裝時能自動安裝相應的依賴包,同時還能使用不同的虛擬環境隔離不同要求的專案。

分析利器: 在 Anaconda 官網中是這麼宣傳自己的:適用於企業級大資料分析的Python工具。其包含了720多個資料科學相關的開源包,在資料視覺化、機器學習、深度學習等多方面都有涉及。不僅可以做資料分析,甚至可以用在大資料和人工智慧領域。

解決了 是什麼 以及 為什麼 的問題後,下面讓我們看一下 怎麼做(How)

說明一下conda的設計理念——**conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!**因此,conda打破了包管理與環境管理的約束,能非常方便地安裝各種版本python、各種package並方便地切換。

Anaconda中的重要元件

Anaconda Navigator :用於管理工具包和環境的圖形使用者介面,後續涉及的眾多管理命令也可以在 Navigator 中手工實現。

Jupyter notebook :基於web的互動式計算環境,可以編輯易於人們閱讀的文件,用於展示資料分析的過程。

qtconsole :一個可執行 IPython 的仿終端圖形介面程式,相比 Python Shell 介面,qtconsole 可以直接顯示程式碼生成的圖形,實現多行程式碼輸入執行,以及內建許多有用的功能和函式。

spyder :一個使用Python語言、跨平臺的、科學運算整合開發環境。Spyder的最大優點就是模仿MATLAB的“工作空間”。

Conda : Conda的包管理就比較好理解了,這部分功能與pip類似。

安裝Anaconda

Anaconda 可用於 Windows、Mac OS X 和 Linux。可以在官網上找到安裝程式和安裝說明 https://www.anaconda.com/download/

如果計算機上已經安裝了 Python,這不會有任何影響。實際上,指令碼和程式使用的預設 Python 是 Anaconda 附帶的 Python。這裡需要注意的是選對自己作業系統對應的版本。安裝完後開啟cmd,輸入conda list可以檢視當前安裝的內容。輸入conda upgrade --all,可以更新預設環境下的所有包。並在提示是否更新的時候輸入y(Yes)以便讓更新繼續。初次安裝下的軟體包版本一般都比較老舊,因此提前更新可以避免未來不必要的問題。

本人使用的作業系統:Win10,前往anaconda官網下載對應的版本,本人選擇的是Python3.6 + Python 2.7(實際上下載一個即可,推薦3.6)

設定Path變數

預設安裝不會自動新增全域性變數,如果有需求可以手動配置Path,以Anaconda2為例

# 將加入到PATH路徑
D:\Programs\Anaconda2
D:\Programs\Anaconda2\Scripts

# 在cmd輸入
python -V

Python 2.7.14 :: Anaconda, Inc.
複製程式碼

python2和python3版本轉換

在win10環境下進行傻瓜式安裝。當安裝完成時,計算機便具備了Python3.6的環境,推薦使用 Anaconda Prompt 進入命令列

接下來,在cmd的環境下,輸入以下命令安裝Python2.7的環境

conda create -n python27 python=2.7 anaconda
複製程式碼

上面的程式碼建立了一個名為python27的python2.7的環境,最後一個參數列示安裝anaconda下python2.7的所有預設包,這個引數時可選的。

我們進入cmd環境,現在預設的python版本時python3.6,只需要一行簡單的程式碼就可以轉為python2.7的環境

activate python27
複製程式碼

此時本視窗下的python版本變為了python2.7,那麼你肯定猜到了恢復到python3.6的命令

deactivate python27
複製程式碼

其實呢,一般沒有必要恢復到原環境。只要開啟一個新的cmd視窗,預設的python版本就是python3.6

Anaconda 映象

這裡使用了清華大學開源軟體映象站tuna提供的資源,在此表示感謝

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

Anaconda 安裝包可以到以下地址分流下載 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

因為Anaconda.org的伺服器在國外,conda下載的速度經常很慢。可以設定國內的映象源來加速:

# TUNA 還提供了 Anaconda 倉庫的映象,執行以下命令即可新增 Anaconda Python 免費倉庫
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
# 設定搜尋時顯示通道地址
conda config --set show_channel_urls yes

# 執行完上述命令後,會生成配置檔案記錄著我們對conda的配置,直接手動建立、編輯該檔案是相同的效果
# Linux/Mac
~/.condarc
# Windows
C:\Users\USER_NAME\.condarc

# 執行測試一下吧
conda install numpy

複製程式碼

conda安裝django實踐

以下操作為 anaconda python3.6 環境下進入Anaconda Prompt安裝django1.11的實踐過程

# 在python3.6環境下進入Anaconda Prompt建立django1.x專用虛擬環境
conda create -n django1.x
# 啟用專用虛擬環境
activate django1.x
# 檢視conda當前django可用版本
conda search django
conda install django==1.11.10
# 切換到虛擬環境家目錄
cd C:\Users\wsgzao\AppData\Local\conda\conda\envs\django1.x
# 建立專案
django-admin.py startproject myweb
# 建立app
python manage.py startapp myapp
# 啟動Django中的開發伺服器
python manage.py runserver
# 幫助文件
python manage.py -h
# Django命令
python manage.py <command> [options]

複製程式碼

conda常用命令

最新版的conda是從site-packages資料夾中搜尋已經安裝的包,不依賴於pip,因此可以顯示出通過各種方式安裝的包。conda將conda、python等都視為package,因此完全可以使用conda來管理conda和python的版本

# 列出所有已安裝的包
conda list
# 安裝軟體包,同時它會自動安裝此軟體包的依賴項 
conda install package_name
# 同時安裝多個包
conda install numpy pandas
# 安裝指定版本的包
conda install python=2.7
# 安裝離線包
conda install /package-path/package-filename.tar.bz2
# 解除安裝包
conda remove package_name
# 更新環境中的所有已安裝的包
conda update/upgrade --all
# 更新conda,保持conda最新
conda update conda
# 更新anaconda
conda update anaconda
# 更新python
conda update python
# 檢視conda安裝資訊
conda info
# 檢視conda幫助
conda help
# 搜尋可以安裝的包
conda search package_name
# 建立conda虛擬環境
conda create -n env_name
# 在這裡,-n env_name 設定環境的名稱(-n 是指名稱),而 list of packages 是要安裝在環境中的包的列表
conda create -n env_name list of packages
# 可以建立具有特定 Python 版本的環境
conda create -n py2.7.14 python=2.7.14
# 檢視conda版本
conda -V

# 進入環境
# linux 下用 
source activate env_name
# windows 下用
activate env_name

# 離開環境
# linux 下用 
source deactivate
# windows 下用
deactivate

# 列出環境
conda env list
# 刪除環境
conda env remove -n env_name
# 匯出環境將包儲存為 YAML,輸出環境中的所有包的名稱(包括 Python 版本)
conda env export > environment.yaml
# 載入環境
conda env create -f environment.yaml
複製程式碼

相關文章