案例再現(xiàn)
小藍(lán)開始學(xué)習(xí)machine learning啦,各種框架各種模型看起來(lái)超酷幔虏,就想快點(diǎn)拿過來(lái)玩一玩纺念,預(yù)測(cè)個(gè)房?jī)r(jià)走勢(shì)、手寫數(shù)字什么的想括。但是各種環(huán)境的安裝和相互依賴是個(gè)大問題陷谱,不小心就手殘裝廢了,只能刪檔重開XD∩冢現(xiàn)在烟逊,Anaconda橫空出世,這都不是事兒铺根,趕緊把Anaconda這黃金大錘掄起來(lái)宪躯。
下載、安裝位迂、環(huán)境變量設(shè)置访雪,conda -V
檢查一下详瑞,最新版anaconda3,一次點(diǎn)亮臣缀,安全炫酷坝橡,感覺自己棒棒的!開整肝陪!
等等驳庭,聽老人家說(shuō)過,新手得先搞個(gè)虛擬環(huán)境氯窍,隨便玩饲常,玩廢了刪掉,開新的狼讨。So Coooool贝淤!虛擬環(huán)境裝起來(lái)!conda create -n env_name python=2
政供、source activate env_name
播聪,命令行開頭出現(xiàn)的(env_name)
在歡迎我來(lái)到玩家國(guó)度,放開了玩布隔!
剛學(xué)了文本分詞离陶,那我就不客氣了,先來(lái)一套詞云開開眼衅檀。不由分說(shuō)招刨,運(yùn)轉(zhuǎn)靈巧纖細(xì)的手指,小藍(lán)用jupyter notebook
熟練的在虛擬環(huán)境下打開了Jupyter notebook哀军,新建一個(gè)沉眶,說(shuō)是要選kernel,python2還是python3杉适,當(dāng)然是趕時(shí)髦選python3啦(這里埋個(gè)坑)谎倔。
中文的文本分詞需要安裝jieba庫(kù),那就來(lái)一套猿推!conda install -c conda-forge jieba
片习,下載順利,安裝蹬叭。怎么最后冒了段提示:
usage: conda [-h] [-V] command ...
conda: error: argument command: invalid choice: '/Users/usr_name/anaconda3/envs/ml-py2/bin/conda' (choose from 'info', 'help', 'list', 'search', 'create', 'install', 'update', 'upgrade', 'remove', 'uninstall', 'config', 'clean', 'package')
什么意思毯侦?小藍(lán)估摸著是安裝失敗了,去notebook里面import一下具垫,No module named jieba
,沒毛病试幽,conda不太好使筝蚕。換pip卦碾!接著又是一頓猛操作,pip install jieba
起宽,下載安裝successfully洲胖,簡(jiǎn)直崇拜自己。來(lái)import一下坯沪,No module named jieba
绿映,蛤?腐晾!不可能叉弦!小藍(lán)立刻在虛擬環(huán)境中打開python交互界面,import jieba
成功了藻糖,就說(shuō)嘛淹冰,肯定是Jupyter反應(yīng)遲鈍,關(guān)掉重開巨柒!一陣折騰樱拴,依舊是熱情的報(bào)錯(cuò)。小藍(lán)凌亂了洋满,簡(jiǎn)直不敢相信自己的眼睛晶乔!
問題解析
-
kernel是什么?
A kernel provides programming language support in Jupyter. IPython is the default kernel. Additional kernels include R, Julia, and many more.(術(shù)語(yǔ))根據(jù)官方解釋牺勾,kernel簡(jiǎn)而言之就是jupyter支持的編程語(yǔ)言環(huán)境正罢。
在上面的案例,新建的ipynb文件是運(yùn)行在python3的環(huán)境中禽最,而需要的jieba庫(kù)是安裝在python2的環(huán)境中腺怯,所以在notebook中肯定找不到j(luò)ieba,需要在kernel選項(xiàng)中將kernel切換到python2的環(huán)境下川无。
-
notebook啟動(dòng)ipynb時(shí)呛占,默認(rèn)kernel是什么?
新建ipynb文件時(shí)懦趋,選擇的是哪個(gè)kernel晾虑,每次進(jìn)入時(shí)就啟動(dòng)相應(yīng)的kernel
-
kernel和notebook(spyder)是什么關(guān)系?
notebook和spyder都是編輯器仅叫,代碼python或其他運(yùn)行需要語(yǔ)言編譯環(huán)境的支持帜篇,kernel中就包含了這個(gè)語(yǔ)言環(huán)境,不同的kernel可對(duì)應(yīng)不同的環(huán)境诫咱。
-
kernel和虛擬環(huán)境是什么關(guān)系笙隙?
虛擬環(huán)境安裝的python語(yǔ)言編譯環(huán)境,通過配置Jupyter下的kernel.json文件坎缭,就可以將虛擬環(huán)境映射為kernel竟痰。
-
conda創(chuàng)建虛擬環(huán)境后签钩,如何新建kernel?
conda create -n my_env python=3 ipykernel
坏快,創(chuàng)建的時(shí)候務(wù)必要安裝ipykernel(如果是R語(yǔ)言铅檩,要安裝irkernel),ipykernel包的作用是將當(dāng)前所在python環(huán)境添加為kernel莽鸿,配置文件路徑為~/anaconda3/envs/my_env/share/jupyter/kernels/python3/kernel.json
昧旨。 -
kernel相關(guān)操作
查看系統(tǒng)環(huán)境kernel:
jupyter kernelspec list
自動(dòng)關(guān)聯(lián)kernel與虛擬環(huán)境:創(chuàng)建虛擬環(huán)境的同時(shí),安裝上ipykernel即可
手動(dòng)配置kernel:
# 安裝ipykernel
conda install ipykernel
# 新建kernel祥得,其python環(huán)境指向創(chuàng)建kernel時(shí)所在的python環(huán)境
# 路徑為/usr/local/share/jupyter/kernels/kernel_name
# 配置文件為/usr/local/share/jupyter/kernels/kernel_name/kernel.json
ipykernel kernel install [--name kernel_name --display-name "display_name"]
# 查看kernel
jupyter kernelspec list
# 刪除kernel
jupyter kernelspec remove kernel_name
-
kernel管理
在系統(tǒng)環(huán)境(非虛擬環(huán)境)安裝以下包兔沃,能便捷的管理和切換kernel。
切換kernel用nb_conda_kernels:
conda install -c conda-forge nb_conda_kernels
管理kernel用nb_conda:
conda install -c conda-forge nb_conda
-
conda不好用啃沪?
這個(gè)完全不存在的粘拾,與pip同為包管理器,conda與pip只有小部分功能有重疊创千,如安裝python包和配置虛擬環(huán)境缰雇。pip可以在任何環(huán)境中快速的管理python包,而conda需要anaconda環(huán)境的支持追驴,但conda很好的處理了包之間的依賴關(guān)系械哟,尤其是在數(shù)據(jù)科學(xué)方面。
案例中conda安裝失數钛(其實(shí)是調(diào)用jieba失斚九亍),是因?yàn)樵谔摂M環(huán)境下并沒有安裝anaconda丙曙,conda命令調(diào)用的系統(tǒng)環(huán)境中的conda爸业,所以失敗了。
-
anaconda和conda是什么關(guān)系亏镰?
anaconda是python發(fā)行版(發(fā)行版就是內(nèi)置了python相關(guān)軟件包集合的程序扯旷,安裝后可直接使用,不需要再單獨(dú)配置這些包)索抓,conda是包管理器(包管理器是便捷的管理工具钧忽,用于軟件包的安裝、升級(jí)逼肯、卸載等操作耸黑,會(huì)自動(dòng)處理包之間的依賴關(guān)系)。
除了anaconda外篮幢,發(fā)行版還有miniconda大刊,其中只包含了conda管理器,未安裝pydata生態(tài)圈軟件三椿,體積小缺菌,方便熟練工按需裝載軟件曲尸。
其他
使用anaconda3自帶的jupyter notebook,dataframe默認(rèn)的輸出就沒有邊框男翰,可視效果很差,在notebook 5.0.0版本中做的更改(來(lái)源)纽乱,有人嘗試將notebook降級(jí)回4.4版本蛾绎,懶得折騰,將就看了鸦列。