pip與Python
pip是Python的包管理工具,以前pip需要單獨下載,現在集成在Python之中了,但這並沒有改變pip與Python的“平行地位”的事實。
關於pip的包管理,需要注意以下幾點:
- pip只能用於Python包的管理
不像後面介紹的conda,後者也是一個包管理工具,但不僅限於Python包 - pip包的倉庫是:https://pypi.org
pypi(Python Package Index)是Python的官方包庫,非常齊全。 - pip下載的包文件格式是wheel或Python源碼
- pip並不自動解決包的兼容性問題
假設pip安裝的包A和包B都依賴於包C,但是依賴的版本不一樣,pip並不會自動檢查兼容性問題,這就存在風險。
conda與Python
表面看起來,conda和pip好像沒區別,conda也是管理Python包的工具。但是深究起來還是有很些區別的。
- conda可以不僅僅可以管理Python包
conda是一種通用的包與環境管理工具,不僅僅可以管理Python - conda將Python本身也看做是一個包
這在:
conda create -n NAME python=3.7
中看得非常明顯:
這和conda並不單單爲Python服務的定位是符合的。
-
conda下載源是Anaconda repository和Anaconda Cloud
conda並不是從Python官方庫https://pypi.org下載的包,而是從自己的庫Anaconda repository和Anaconda Cloud中下載 -
conda下載的包文件格式是二進制文件
-
conda下載的包自動檢查兼容性問題
conda與Anaconda
既然conda已經可以管理Python環境和包了,爲什麼還要Anaconda呢,或者說Anaconda又是啥?
- conda創建虛擬環境:
conda create -n NAME python=3.7
- conda管理包:
conda install package-name # 安裝包
conda update package-name # 更新包
conda remove package-name # 卸載包
那麼Anaconda是幹嘛的?
答:Anaconda = Python(base) + conda + 一些常用包 + Jupyter,Spyder等工具:
一個和Anaconda非常類似的就是Miniconda,它更爲精簡:
它只有Python和conda,不像Anaconda那樣自作聰明下很多包,也沒有任何Jupyter等工具。
conda = pip + vitualenv/venv
可以看到,conda除了可以管理Python包,其實更重要的是一鍵創建虛擬環境,從這個角度來說:
conda = pip(管理包) + virtualenv/venv(創建Python虛擬環境,可指定Python版本)
如此看來,最“乾淨”的Python開發方式應該是:Python(內含pip)+ virtualenv/venv。
按重量級來劃分應該是:
Python(不含pip)
< Python(含pip)
< Python(含pip)+virtualenv/venv
< conda
< Miniconda
< Anaconda
Anaconda應該是最完善,也是最笨重的方式,現在就更能理解理解:“Anaconda是Python發行版本”這句話了。
當然,關於pip與conda推薦一下幾個文章:
python包管理工具:Conda和pip比較
關於conda和anaconda不可不知的誤解和事實——conda必知必會
覺得喜歡可以點個贊哦