1.眾所周知,pip的確是python官方(PyPA)推薦的Python軟件包安裝管理工具,在安裝Python軟件包時,第一反應應該是pip。正是由于pip是Python官方推薦的“正統”工具,所以pip只專注于Python軟件包之間的依賴,不考慮Python軟件包與非Python軟件包之間的依賴關系。
而Tensorflow不僅依賴于Python軟件包,還依賴于非Python軟件包,如cudatoolkit、cudnn、interl-openmp、intel-MKL及protoc等。
conda在安裝Tensorflow時,會同時解決TensorFlow所依賴的Python軟件包和非Python軟件包的問題,讓安裝變得簡單。
此處需要留意conda對于多個環境的包是統一進行管理的,不管在什么環境下載的包,都會額外在一個目錄(Anaconda3\pkgs\fasttext)里面備份一份,因此如果使用conda install安裝一個別的環境已經裝過的包時,不用重新下載,直接copy一份到該環境即可。
但是如果使用pip因為每個環境安裝使用的pip在不同的路徑下,故會重復安裝。
2.conda list下的和pip list下的同樣的包,導入的是pip list下的。(這里在csdn上也有別的說法,但我個人下載numpy的時候會優先讀pip下的2.0,不讀conda的1.26,很怪)
令一種說法:
- conda安裝 不會查到pip安裝的包(先pip后conda會正常安裝并調用conda,即conda不認pip下過的,這里就可能會導致一些奇怪的沖突),pip安裝 可以查到conda的包(先conda再pip會顯示已安裝)。
- 盡量避免混用,如果必須要混用,先用conda再用pip.
3.
Conda list除了虛擬環境下的還有關聯文件下的
Pip list只有當前虛擬環境下的
4.若混用,uninstall后可能會出一些奇怪的問題。先把warning里提到的幾個文件刪掉(一般問題文件系統會加上~前綴,注意要把其中帶-infor后綴的文件也刪了(warning里不會出現這個文件,但是會有~前綴,list指令讀的是這個文件,不刪install會有問題)),再看看anaconda文件里lib和env\lpytorch\lib里還有沒有想要刪除的包的文件,手動全刪,再install就行