前言
初學(xué)Python時,總是被python的兩個不太兼容的版本搞得頭昏腦脹。按目前的發(fā)展趨勢,python未來的主流版為python3尖奔。但是我們經(jīng)常會遇到一些很有意思代碼使用的是python2版本。于是我們需要同時擁有python2和python3的運行環(huán)境穷当。這里介紹一個強大的軟件Anaconda提茁,它實現(xiàn)python2和python3兩個版本的共存,并且可以相互轉(zhuǎn)換馁菜。Anaconda 是一個用于科學(xué)計算的 Python 發(fā)行版茴扁,支持 Linux, Mac, Windows, 包含了眾多流行的科學(xué)計算、數(shù)據(jù)分析的 Python 包汪疮。
使用Anaconda輕松解決Python2和Python3共存
更新歷史
2018年05月04日 - 初稿
閱讀原文 - https://wsgzao.github.io/post/anaconda/
擴展閱讀
Anaconda - https://anaconda.org/
為什么選擇Anaconda
Anaconda 實際上是一個軟件發(fā)行版峭火,它附帶了 conda毁习、Python 和多個科學(xué)包及其依賴項。應(yīng)用程序 conda 是包和環(huán)境管理器卖丸。Anaconda 的下載文件比較大(約 500 MB)纺且,因為它附帶了 Python 中最常用的數(shù)據(jù)科學(xué)包。如果只需要某些包稍浆,或者需要節(jié)省帶寬或存儲空間载碌,也可以使用 Miniconda 這個較小的發(fā)行版(僅包含 conda 和 Python)。
什么是 Anaconda
Anaconda是專注于數(shù)據(jù)分析的Python發(fā)行版本粹湃,包含了conda恐仑、Python等多個科學(xué)包及其依賴項泉坐。作為好奇寶寶的你是不是發(fā)現(xiàn)了一個新名詞 conda为鳄,那么你一定會問 conda 又是什么呢?
什么是 conda
conda 是開源包(packages)和虛擬環(huán)境(environment)的管理系統(tǒng)
packages 管理: 可以使用 conda 來安裝腕让、更新 孤钦、卸載工具包 ,并且它更關(guān)注于數(shù)據(jù)科學(xué)相關(guān)的工具包纯丸。在安裝 anaconda 時就預(yù)先集成了像 Numpy偏形、Scipy、 pandas觉鼻、Scikit-learn 這些在數(shù)據(jù)分析中常用的包俊扭。另外值得一提的是,conda 并不僅僅管理Python的工具包坠陈,它也能安裝非python的包萨惑。比如在新版的 Anaconda 中就可以安裝R語言的集成開發(fā)環(huán)境 Rstudio。
虛擬環(huán)境管理: 在conda中可以建立多個虛擬環(huán)境仇矾,用于隔離不同項目所需的不同版本的工具包庸蔼,以防止版本上的沖突。對糾結(jié)于 Python 版本的同學(xué)們贮匕,我們也可以建立 Python2 和 Python3 兩個環(huán)境姐仅,來分別運行不同版本的 Python 代碼。
知道 是什么(what) 的同時刻盐,我們也需要問一問 為什么(why)掏膏。那么,為什么要選擇用Anaconda呢敦锌?
Anaconda 的優(yōu)點
Anaconda的優(yōu)點總結(jié)起來就八個字:省時省心馒疹、分析利器。
省時省心: Anaconda通過管理工具包供屉、開發(fā)環(huán)境行冰、Python版本溺蕉,大大簡化了你的工作流程。不僅可以方便地安裝悼做、更新疯特、卸載工具包,而且安裝時能自動安裝相應(yīng)的依賴包肛走,同時還能使用不同的虛擬環(huán)境隔離不同要求的項目漓雅。
分析利器: 在 Anaconda 官網(wǎng)中是這么宣傳自己的:適用于企業(yè)級大數(shù)據(jù)分析的Python工具。其包含了720多個數(shù)據(jù)科學(xué)相關(guān)的開源包朽色,在數(shù)據(jù)可視化邻吞、機器學(xué)習(xí)、深度學(xué)習(xí)等多方面都有涉及葫男。不僅可以做數(shù)據(jù)分析抱冷,甚至可以用在大數(shù)據(jù)和人工智能領(lǐng)域。
解決了 是什么 以及 為什么 的問題后梢褐,下面讓我們看一下 怎么做(How)颠放。
說明一下conda的設(shè)計理念——conda將幾乎所有的工具最蕾、第三方包都當(dāng)做package對待镊辕,甚至包括python和conda自身靖秩!因此,conda打破了包管理與環(huán)境管理的約束鱼响,能非常方便地安裝各種版本python鸣剪、各種package并方便地切換。
Anaconda中的重要組件
Anaconda Navigator :用于管理工具包和環(huán)境的圖形用戶界面丈积,后續(xù)涉及的眾多管理命令也可以在 Navigator 中手工實現(xiàn)筐骇。
Jupyter notebook :基于web的交互式計算環(huán)境,可以編輯易于人們閱讀的文檔桶癣,用于展示數(shù)據(jù)分析的過程拥褂。
qtconsole :一個可執(zhí)行 IPython 的仿終端圖形界面程序,相比 Python Shell 界面牙寞,qtconsole 可以直接顯示代碼生成的圖形饺鹃,實現(xiàn)多行代碼輸入執(zhí)行,以及內(nèi)置許多有用的功能和函數(shù)间雀。
spyder :一個使用Python語言悔详、跨平臺的、科學(xué)運算集成開發(fā)環(huán)境惹挟。Spyder的最大優(yōu)點就是模仿MATLAB的“工作空間”茄螃。
Conda : Conda的包管理就比較好理解了,這部分功能與pip類似连锯。
安裝Anaconda
Anaconda 可用于 Windows归苍、Mac OS X 和 Linux用狱。可以在官網(wǎng)上找到安裝程序和安裝說明
https://www.anaconda.com/download/
如果計算機上已經(jīng)安裝了 Python拼弃,這不會有任何影響夏伊。實際上,腳本和程序使用的默認(rèn) Python 是 Anaconda 附帶的 Python吻氧。這里需要注意的是選對自己操作系統(tǒng)對應(yīng)的版本溺忧。安裝完后打開cmd,輸入conda list可以查看當(dāng)前安裝的內(nèi)容。輸入conda upgrade --all盯孙,可以更新默認(rèn)環(huán)境下的所有包鲁森。并在提示是否更新的時候輸入y(Yes)以便讓更新繼續(xù)。初次安裝下的軟件包版本一般都比較老舊振惰,因此提前更新可以避免未來不必要的問題歌溉。
本人使用的操作系統(tǒng):Win10,前往anaconda官網(wǎng)下載對應(yīng)的版本报账,本人選擇的是Python3.6 + Python 2.7(實際上下載一個即可研底,推薦3.6)
設(shè)置Path變量
默認(rèn)安裝不會自動添加全局變量埠偿,如果有需求可以手動配置Path透罢,以Anaconda2為例
# 將加入到PATH路徑
D:\Programs\Anaconda2
D:\Programs\Anaconda2\Scripts
# 在cmd輸入
python -V
Python 2.7.14 :: Anaconda, Inc.
python2和python3版本轉(zhuǎn)換
在win10環(huán)境下進行傻瓜式安裝。當(dāng)安裝完成時冠蒋,計算機便具備了Python3.6的環(huán)境羽圃,推薦使用 Anaconda Prompt 進入命令行
接下來,在cmd的環(huán)境下抖剿,輸入以下命令安裝Python2.7的環(huán)境
conda create -n python27 python=2.7 anaconda
上面的代碼創(chuàng)建了一個名為python27的python2.7的環(huán)境朽寞,最后一個參數(shù)表示安裝anaconda下python2.7的所有默認(rèn)包,這個參數(shù)時可選的斩郎。
我們進入cmd環(huán)境脑融,現(xiàn)在默認(rèn)的python版本時python3.6,只需要一行簡單的代碼就可以轉(zhuǎn)為python2.7的環(huán)境
activate python27
此時本窗口下的python版本變?yōu)榱藀ython2.7缩宜,那么你肯定猜到了恢復(fù)到python3.6的命令
deactivate python27
其實呢肘迎,一般沒有必要恢復(fù)到原環(huán)境。只要打開一個新的cmd窗口锻煌,默認(rèn)的python版本就是python3.6
Anaconda 鏡像
這里使用了清華大學(xué)開源軟件鏡像站tuna提供的資源妓布,在此表示感謝
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
Anaconda 安裝包可以到以下地址分流下載
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
因為Anaconda.org的服務(wù)器在國外,conda下載的速度經(jīng)常很慢宋梧∠徽樱可以設(shè)置國內(nèi)的鏡像源來加速:
# 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/
# 設(shè)置搜索時顯示通道地址
conda config --set show_channel_urls yes
# 執(zhí)行完上述命令后捂龄,會生成配置文件記錄著我們對conda的配置释涛,直接手動創(chuàng)建加叁、編輯該文件是相同的效果
# Linux/Mac
~/.condarc
# Windows
C:\Users\USER_NAME\.condarc
# 運行測試一下吧
conda install numpy
conda安裝django實踐
以下操作為 anaconda python3.6 環(huán)境下進入Anaconda Prompt安裝django1.11的實踐過程
# 在python3.6環(huán)境下進入Anaconda Prompt創(chuàng)建django1.x專用虛擬環(huán)境
conda create -n django1.x
# 激活專用虛擬環(huán)境
activate django1.x
# 查看conda當(dāng)前django可用版本
conda search django
conda install django==1.11.10
# 切換到虛擬環(huán)境家目錄
cd C:\Users\wsgzao\AppData\Local\conda\conda\envs\django1.x
# 創(chuàng)建項目
django-admin.py startproject myweb
# 創(chuàng)建app
python manage.py startapp myapp
# 啟動Django中的開發(fā)服務(wù)器
python manage.py runserver
# 幫助文檔
python manage.py -h
# Django命令
python manage.py <command> [options]
conda常用命令
最新版的conda是從site-packages文件夾中搜索已經(jīng)安裝的包,不依賴于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
# 更新環(huán)境中的所有已安裝的包
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
# 創(chuàng)建conda虛擬環(huán)境
conda create -n env_name
# 在這里耀态,-n env_name 設(shè)置環(huán)境的名稱(-n 是指名稱)轮傍,而 list of packages 是要安裝在環(huán)境中的包的列表
conda create -n env_name list of packages
# 可以創(chuàng)建具有特定 Python 版本的環(huán)境
conda create -n py2.7.14 python=2.7.14
# 查看conda版本
conda -V
# 進入環(huán)境
# linux 下用
source activate env_name
# windows 下用
activate env_name
# 離開環(huán)境
# linux 下用
source deactivate
# windows 下用
deactivate
# 列出環(huán)境
conda env list
# 刪除環(huán)境
conda env remove -n env_name
# 導(dǎo)出環(huán)境將包保存為 YAML,輸出環(huán)境中的所有包的名稱(包括 Python 版本)
conda env export > environment.yaml
# 加載環(huán)境
conda env create -f environment.yaml