【全&細】在WSL中安裝Anaconda3并建立獨立環(huán)境

前言:anaconda作為python包管理器,有很多便利之處。但是需要規(guī)范使用并注意一些細節(jié),以避免版本沖突和庫文件沖突,重蹈卸載anaconda之覆轍。WSL是Windows下的linux系統(tǒng),相較于虛擬機有很大優(yōu)勢。
1.在windows商店中安裝Windows Subsystem for Linux(WSL)。注:需要在開發(fā)者模式種勾選啟用WSL。安裝完成后將sources.list更換清華源,網(wǎng)址https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/,以提高各種下載速度。這里只是為了提醒,不贅述。另外記得改成允許遠程連接,這樣就可以用xshell連WSL了,而不用忍受WSL本身的別扭手感。

2.進入https://repo.anaconda.com/archive/,根據(jù)計算機是32位或64位選擇版本,下載anaconda for linux。我使用的是Anaconda3-5.2.0-Linux-x86_64.sh。
3.在終端命令行中輸入wget命令下載
?$ wget https://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh
當然,考慮到國內(nèi)的網(wǎng)絡,我們也可以從其他國內(nèi)渠道下載。
4.運行腳本
$ bash Anaconda3-5.2.0-Linux-x86_64.sh
5.提示輸入yes同意條款,輸入yes同意安裝路徑。
6.提示安裝VS Code,不要在這里裝,下載會很慢。
7.關(guān)閉當前終端,重新打開。
8.如果命令行最左邊多了"(base)",且輸入conda list,出現(xiàn):
# packages in environment at /home/*/anaconda3:
……

就說明好了。
9.修改~/.bashrc
$?vi ~/.bashrc
加入如下兩句:

這樣以后你輸入 conda deactivate?退出anaconda,再在命令行中輸入conda activate就啟動anaconda了。

10.建立環(huán)境。
base就是基礎(chǔ)環(huán)境,但是我們?nèi)f萬不可直接在base上做事情,因為你做項目會發(fā)現(xiàn)很多packages的版本都是不兼容的,比如numpy高低版本的寫法不同之類的。如果你遇到這種問題,你不僅要重裝,還要經(jīng)歷一段崩潰。
因此,我們給每個獨立的項目建立獨立的環(huán)境,只要保證在這個項目里的packages兼容就行了。
那么怎么建立呢?
在anaconda命令行(即左邊有base的命令行)下,輸入:
?$ conda create --name SUNNY?python=3
這個命令會建立一個名為SUNNY?的環(huán)境,且使用python3。
輸入y以繼續(xù)。
裝好后,輸入
?$?conda activate?SUNNY?
左邊的括號就會從base變成SUNNY,這提醒了你這是在SUNNY?而不是base環(huán)境中。
11. 沖突警告
linux中有一些庫,在/usr/lib中,比如cmake。在安裝好anaconda后,系統(tǒng)中多了anaconda的庫。這個時候你在cmake的時候,系統(tǒng)會報錯存在“沖突”,這是因為編譯不知道應該用linux的庫還是anaconda的庫。我們輸入
$ echo $PATH
會發(fā)現(xiàn)里面有anaconda的路徑
/home/sun/anaconda3/bin:/home/sun/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
因此在使用cmake編譯之前,我們要把之前~/.bashrc的anaconda的兩行注釋掉,等編譯完成后再取消注釋。

注釋之后再輸入
$ echo $PATH
如果anaconda的路徑?jīng)]了就可以放心地編譯了。
12. 裝包
基本語法:
$?conda install **
需要用什么自己鼓搗。別忘了建立新環(huán)境(畢竟弄壞了可以直接刪)。
13. 安裝jupyter notebook
在自己建立的環(huán)境中輸入
$?conda install -c conda-forge jupyterlab
輸入y選擇確認即可。具體怎么用就不細說了,反正很適合WSL,因為你可以直接把給的網(wǎng)址復制到自己的瀏覽器里,直接在瀏覽器里編程,而不用非得在命令行里敲。
參考資料:
https://gist.github.com/kauffmanes/5e74916617f9993bc3479f401dfec7da
https://zhuanlan.zhihu.com/p/95497832