使用Anaconda實現(xiàn)Python2和Python3共存及相互轉(zhuǎn)換

前言

初學(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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末首装,一起剝皮案震驚了整個濱河市创夜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌仙逻,老刑警劉巖驰吓,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異系奉,居然都是意外死亡檬贰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門缺亮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來翁涤,“玉大人,你說我怎么就攤上這事萌踱】瘢” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵并鸵,是天一觀的道長鸳粉。 經(jīng)常有香客問我,道長园担,這世上最難降的妖魔是什么届谈? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮粉铐,結(jié)果婚禮上疼约,老公的妹妹穿的比我還像新娘。我一直安慰自己蝙泼,他們只是感情好程剥,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般织鲸。 火紅的嫁衣襯著肌膚如雪舔腾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天搂擦,我揣著相機與錄音稳诚,去河邊找鬼。 笑死瀑踢,一個胖子當(dāng)著我的面吹牛扳还,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播橱夭,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼氨距,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棘劣?” 一聲冷哼從身側(cè)響起俏让,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茬暇,沒想到半個月后首昔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡糙俗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年勒奇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臼节。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡撬陵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出网缝,到底是詐尸還是另有隱情,我是刑警寧澤蟋定,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布粉臊,位于F島的核電站,受9級特大地震影響驶兜,放射性物質(zhì)發(fā)生泄漏扼仲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一抄淑、第九天 我趴在偏房一處隱蔽的房頂上張望屠凶。 院中可真熱鬧,春花似錦肆资、人聲如沸矗愧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唉韭。三九已至夜涕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間属愤,已是汗流浹背女器。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留住诸,地道東北人驾胆。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像贱呐,于是被迫代替她去往敵國和親俏拱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容