Python配置-virtualenv和conda的区别
之前詳細(xì)說(shuō)過(guò)如何在windows上部署conda環(huán)境,詳細(xì)可以查看我的這篇博客。其他平臺(tái)(主要是linux和macos)在我看來(lái)異曲同工,只是幾個(gè)命令由conda變?yōu)榱藄ource。(如conda activate myvenv變?yōu)閟ource activate myvenv)
什么是virtualenv(venv)
這是一個(gè)虛擬環(huán)境管理器,作為非數(shù)據(jù)科學(xué)領(lǐng)域的開(kāi)發(fā)者來(lái)說(shuō)是很實(shí)用的。它可以讓你每個(gè)項(xiàng)目甚至每個(gè)腳本配置一個(gè)自定義的Python解釋器環(huán)境,這最大的好處是我可以不污染開(kāi)發(fā)環(huán)境。
- 舉個(gè)例子,我有個(gè)項(xiàng)目是專(zhuān)門(mén)寫(xiě)爬蟲(chóng)的,那么我可能需要requests,bs4,lxml,pyspider,scrapy等包或者框架,此時(shí)我還有個(gè)項(xiàng)目我想要寫(xiě)點(diǎn)GUI界面,主要使用的包是pyqt,如果在原生的python解釋器環(huán)境里面,我不得不把這個(gè)GUI包(對(duì)于我爬蟲(chóng)項(xiàng)目可能永遠(yuǎn)不會(huì)涉及使用)放到下載的包里面。
- 這不只是看著不舒服(不考慮反復(fù)去卸載包),久而久之,你的開(kāi)發(fā)環(huán)境可能會(huì)變得很龐大,因?yàn)槔锩娑逊e了很多垃圾包(你基本上不會(huì)再使用了),很多配置文件,難以尋覓,這對(duì)計(jì)算機(jī)是莫大的傷害。
- 但是venv則可以創(chuàng)建任意多個(gè)虛擬環(huán)境,你只要指定當(dāng)前環(huán)境那么pip安裝的包就只會(huì)在這個(gè)環(huán)境下,這個(gè)環(huán)境和你的操作系統(tǒng)部署的python環(huán)境是隔離的。這有兩個(gè)好處。
- 首先,我可以分門(mén)別類(lèi)常見(jiàn)虛擬環(huán)境,互不污染。(如機(jī)器學(xué)習(xí)和爬蟲(chóng)不干涉)
- 其次,一旦我不使用了,可以直接刪除虛擬環(huán)境,而不用管各種文件殘留,關(guān)聯(lián)問(wèn)題了。
什么是pip
pip 是 Python 最常用的包管理器,該工具提供了對(duì)Python 包的查找、下載、安裝、卸載的功能。它能自動(dòng)處理依賴(lài) 。(linux開(kāi)發(fā)者曾今對(duì)此深?lèi)和唇^知道yum的出現(xiàn))一般pip是解釋器自帶的,當(dāng)然也可以安裝。pip的出現(xiàn)使得類(lèi)似java那樣第三方包較難管理的局面消失(當(dāng)然java也可以方便處理了)。主要的安裝包使用方法為命令行執(zhí)行pip install packagename,當(dāng)然,后面提到的conda也具有包管理器功能,安裝包命令為conda install packagename。
什么是conda
最近有人問(wèn)我venv和conda有什么區(qū)別,其實(shí)在我看來(lái)區(qū)別不是特別大。主要如下。
- 如果說(shuō)venv是虛擬環(huán)境管理器,pip是包管理器,那么conda則是兩者的結(jié)合。
- 遺憾的是conda的包管理器做的一般且會(huì)安裝過(guò)多依賴(lài)如TensorFlow自動(dòng)安裝cudnn(在主機(jī)配置了cudnn的情況下),大多數(shù)時(shí)候還是使用pip安裝包。
- 但是,注意,pip只能安裝Python的包,conda可以安裝一些工具軟件,即使這些軟件不是基于Python開(kāi)發(fā)的。
- 但是conda的虛擬環(huán)境管理還是可以的,一般使用venv會(huì)在該項(xiàng)目下創(chuàng)建虛擬環(huán)境,再不濟(jì)也會(huì)在項(xiàng)目下創(chuàng)建venv的文件夾(含配置文件),當(dāng)然pycharm下創(chuàng)建虛擬環(huán)境另說(shuō);然而conda每個(gè)虛擬環(huán)境不會(huì)占用項(xiàng)目文件夾的空間,它創(chuàng)建在用戶(hù)設(shè)定的一個(gè)位置,這使得多個(gè)項(xiàng)目共享一個(gè)虛擬環(huán)境更加方便(只是方便,venv也是可以的,但是venv一般占用項(xiàng)目文件夾空間,而且venv命令行使用具有局限性)。
- conda虛擬環(huán)境是獨(dú)立于操作系統(tǒng)解釋器環(huán)境的,即無(wú)論操作系統(tǒng)解釋器什么版本(哪怕2.7),我也可以指定虛擬環(huán)境python版本為3.6(見(jiàn)文章開(kāi)頭所說(shuō)原博客),而venv是依賴(lài)主環(huán)境的。
- 對(duì)于科學(xué)計(jì)算和大數(shù)據(jù)領(lǐng)域的人,conda是環(huán)境自動(dòng)集成了numpy這樣的主流科學(xué)計(jì)算包的,venv每個(gè)包都要自行下載。
- conda有圖形化環(huán)境管理器,venv沒(méi)有。(雖然開(kāi)發(fā)人員幾乎不用圖形界面conda)
?
好吧,對(duì)于我這樣一個(gè)一直使用conda的人問(wèn)我venv怎么樣本來(lái)就有失偏頗,但個(gè)人覺(jué)得conda是很好用的,尤其圖形化環(huán)境(見(jiàn)下圖)下(如windows,ubuntu)安裝anaconda集成了jupyter notebook等科算數(shù)據(jù)分析人員等常用工具。當(dāng)然,如果你是一個(gè)命令行(見(jiàn)下圖)專(zhuān)家(當(dāng)然,conda并不需要熟悉太多命令)并且覺(jué)得Anaconda自帶太多用不到的包,只想使用conda的環(huán)境管理和包管理功能,那么Anaconda確實(shí)太過(guò)龐大了,推薦使用Miniconda,它是Anaconda的無(wú)界面和預(yù)裝包的版本。
總結(jié)
以上是生活随笔為你收集整理的Python配置-virtualenv和conda的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据分析机器学习-分类好坏的评价方式
- 下一篇: 机器学习-Logistic回归原理及实战