環(huán)境管理
別用conda了,可以用mamba。在google搜索mamba或者miniforge,去github下載release安裝。它是conda的平替,但是速度快了好多,輸出信息也更豐富。
mamba和pip install
可以只用mamba安裝包,也可以用mamba切換環(huán)境,用pip安裝包。pip的成功率高很多,速度也很快,建議還是用pip算了......
當(dāng)你使用
他倆的區(qū)別這個(gè)回答寫的很好
作者:月踏
鏈接:https://www.zhihu.com/question/395145313/answer/2449421755
來源:知乎
- conda install xxx:這種方式安裝的庫都會放在
mambaforge/pkgs
目錄下,這樣的好處就是,當(dāng)在某個(gè)環(huán)境下已經(jīng)下載好了某個(gè)庫,再在另一個(gè)環(huán)境中還需要這個(gè)庫時(shí),就可以直接從pkgs目錄下將該庫復(fù)制至新環(huán)境而不用重復(fù)下載。- pip install xxx:分兩種情況,一種情況就是當(dāng)前conda環(huán)境的python是conda安裝的,和系統(tǒng)的不一樣,而且不是base env,那么xxx會被安裝到
mambaforge/envs/current_env/lib/python3.x/site-packages
文件夾中(base環(huán)境會安在mambaforge/Lib/site-packages
),如果當(dāng)前conda環(huán)境用的是系統(tǒng)的python,那么xxx會通常會被安裝到~/.local/lib/python3.x/site-packages
文件夾中- 當(dāng)然,二者都可以指定安裝路徑
這里引出一個(gè)問題:conda和pip安裝同一個(gè)xxx庫情況下,conda環(huán)境下python代碼中import xxx時(shí),誰安裝的xxx優(yōu)先級較高會被import,這個(gè)問題通過下面這條命令可以解決:
python -m site
在我的機(jī)器上,會有類似下面輸出:
(py3.6) [~/anaconda3/pkgs @ s64]$ python -m site sys.path = [ '~/anaconda3/pkgs', '~/anaconda3/envs/py3.6/lib/python36.zip', '~/anaconda3/envs/py3.6/lib/python3.6', '~/anaconda3/envs/py3.6/lib/python3.6/lib-dynload', '~/anaconda3/envs/py3.6/lib/python3.6/site-packages', ] USER_BASE: '~/.local' (exists) USER_SITE: '~/.local/lib/python3.6/site-packages' (doesn't exist) ENABLE_USER_SITE: True
這里的USER_BASE 和USER_SITE其實(shí)就是用戶自定義的啟用Python腳本和依賴安裝包的基礎(chǔ)路徑,從上面的輸出可以看到,
import xxx
時(shí),先找的是anaconda3/pkgs
目錄,所以conda安裝的包會被import進(jìn)來。
作者:HexUp
鏈接:https://www.zhihu.com/question/395145313/answer/1230725052
來源:知乎
?pip是用來安裝python包的,安裝的是python wheel或者源代碼的包。從源碼安裝的時(shí)候需要有編譯器的支持,pip也不會去支持python語言之外的依賴項(xiàng)。
conda是用來安裝conda package,雖然大部分conda包是python的,但它支持了不少非python語言寫的依賴項(xiàng),比如mkl cuda這種c c++寫的包。然后,conda安裝的都是編譯好的二進(jìn)制包,不需要你自己編譯。所以,pip有時(shí)候系統(tǒng)環(huán)境沒有某個(gè)編譯器可能會失敗,conda不會。這導(dǎo)致了conda裝東西的體積一般比較大,尤其是mkl這種,動不動幾百兆甚至一G多。
安裝過程問題
1. opencv從conda安裝,vscode代碼補(bǔ)全會有bug,用pip就好了
2. clash代理直接開全局,可以用迅雷加速下載?。規(guī)則模式迅雷偶爾識別不到。mamba規(guī)則和全局代理都o(jì)k,但是pip一定要命令行指明代理“--proxy="http://IP:port",ip在“設(shè)置”,port在clash首頁
3. 我在用官網(wǎng)命令,從mamba安裝cuda 11.7的torch時(shí)碰到了大量問題:
?一開始報(bào)錯“另一個(gè)程序正在使用此文件,進(jìn)程無法訪問”,刪除之后 nvidia/noarch的源又訪問超時(shí),把所有下載的都刪除了手動安裝之后又卡在了 “Looking for ['pytorch']” 這步。
最后卸載重安mambaforge,然后安裝失敗的cuda包直接參考這篇文章手動安裝,中間所有warning的包一律刪除,解決了問題
win10下,conda安裝GPU版pytorch最新版本:cuda11.7,遇到的坑 - FSWLY - 博客園
?實(shí)際上,conda管這些下載下來用于安裝的tar.bz2叫做tarball,當(dāng)換系統(tǒng)時(shí),把這些難以下載的包復(fù)制過去手動用“mamba install --use-local path”也可以 .
4.? 卸載了torch,從tar安裝之后,報(bào)告OSERROR [winerr 126] cannot load "xxx/shm.dll or one of its dependencies"
? ? ? ? 如果這個(gè)dll真沒有,有可能是路徑問題,參考這篇博客。
? ? ? ? 如果有,那就慘了,依賴缺失。我當(dāng)時(shí)根據(jù)網(wǎng)絡(luò)上對126號錯誤推薦的辦法,用dependence walker?分析了一下shm.dll,發(fā)現(xiàn)有幾個(gè)dll找不到了,其中一個(gè)是uv.dll但是別人電腦一樣找不到,一樣能跑。我就忽略了這個(gè)問題。第二天我新建了一個(gè)虛擬環(huán)境(之前是base),試圖用官網(wǎng)命令重安一遍torch,它給出了下列依賴包:
正好這里有個(gè)uv!也就是這個(gè)uv是從nvidia源下載的。雖然它是B,不是d,但我死馬當(dāng)做活馬醫(yī)?,去base里更新了它,然后就能用了。淚目!文章來源:http://www.zghlxwxcb.cn/news/detail-472574.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-472574.html
到了這里,關(guān)于mamba環(huán)境管理和安裝包的細(xì)節(jié)(含conda/pip區(qū)分)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!