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