Anaconda、Jupyter、Kernel与No module named XXX

案例再现

小蓝开始学习machine learning啦,各种框架各种模型看起来超酷,就想快点拿过来玩一玩,预测个房价走势、手写数字什么的。但是各种环境的安装和相互依赖是个大问题,不小心就手残装废了,只能删档重开XD。现在,Anaconda横空出世,这都不是事儿,赶紧把Anaconda这黄金大锤抡起来。

下载、安装、环境变量设置,conda -V检查一下,最新版anaconda3,一次点亮,安全炫酷,感觉自己棒棒的!开整!

等等,听老人家说过,新手得先搞个虚拟环境,随便玩,玩废了删掉,开新的。So Coooool!虚拟环境装起来!conda create -n env_name python=2source activate env_name,命令行开头出现的(env_name)在欢迎我来到玩家国度,放开了玩!

刚学了文本分词,那我就不客气了,先来一套词云开开眼。不由分说,运转灵巧纤细的手指,小蓝用jupyter notebook熟练的在虚拟环境下打开了Jupyter notebook,新建一个,说是要选kernel,python2还是python3,当然是赶时髦选python3啦(这里埋个坑)。

中文的文本分词需要安装jieba库,那就来一套!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')

什么意思?小蓝估摸着是安装失败了,去notebook里面import一下,No module named jieba,没毛病,conda不太好使。换pip!接着又是一顿猛操作,pip install jieba,下载安装successfully,简直崇拜自己。来import一下,No module named jieba,蛤?!不可能!小蓝立刻在虚拟环境中打开python交互界面,import jieba成功了,就说嘛,肯定是Jupyter反应迟钝,关掉重开!一阵折腾,依旧是热情的报错。小蓝凌乱了,简直不敢相信自己的眼睛!

问题解析

  1. kernel是什么?

    A kernel provides programming language support in Jupyter. IPython is the default kernel. Additional kernels include R, Julia, and many more.(术语)根据官方解释,kernel简而言之就是jupyter支持的编程语言环境。

    在上面的案例,新建的ipynb文件是运行在python3的环境中,而需要的jieba库是安装在python2的环境中,所以在notebook中肯定找不到jieba,需要在kernel选项中将kernel切换到python2的环境下。

  2. notebook启动ipynb时,默认kernel是什么?

    新建ipynb文件时,选择的是哪个kernel,每次进入时就启动相应的kernel

  3. kernel和notebook(spyder)是什么关系?

    notebook和spyder都是编辑器,代码python或其他运行需要语言编译环境的支持,kernel中就包含了这个语言环境,不同的kernel可对应不同的环境。

  4. kernel和虚拟环境是什么关系?

    虚拟环境安装的python语言编译环境,通过配置Jupyter下的kernel.json文件,就可以将虚拟环境映射为kernel。

  5. conda创建虚拟环境后,如何新建kernel?

    conda create -n my_env python=3 ipykernel,创建的时候务必要安装ipykernel(如果是R语言,要安装irkernel),ipykernel包的作用是将当前所在python环境添加为kernel,配置文件路径为~/anaconda3/envs/my_env/share/jupyter/kernels/python3/kernel.json

  6. kernel相关操作

    • 查看系统环境kernel:jupyter kernelspec list

    • 自动关联kernel与虚拟环境:创建虚拟环境的同时,安装上ipykernel即可

    • 手动配置kernel:

# 安装ipykernel
conda install ipykernel
# 新建kernel,其python环境指向创建kernel时所在的python环境
# 路径为/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
  1. kernel管理

    在系统环境(非虚拟环境)安装以下包,能便捷的管理和切换kernel。

    • 切换kernel用nb_conda_kernelsconda install -c conda-forge nb_conda_kernels

    • 管理kernel用nb_condaconda install -c conda-forge nb_conda

  2. conda不好用?

    这个完全不存在的,与pip同为包管理器,conda与pip只有小部分功能有重叠,如安装python包和配置虚拟环境。pip可以在任何环境中快速的管理python包,而conda需要anaconda环境的支持,但conda很好的处理了包之间的依赖关系,尤其是在数据科学方面。

    案例中conda安装失败(其实是调用jieba失败),是因为在虚拟环境下并没有安装anaconda,conda命令调用的系统环境中的conda,所以失败了。

  3. anaconda和conda是什么关系?

    anaconda是python发行版(发行版就是内置了python相关软件包集合的程序,安装后可直接使用,不需要再单独配置这些包),conda是包管理器(包管理器是便捷的管理工具,用于软件包的安装、升级、卸载等操作,会自动处理包之间的依赖关系)。

    除了anaconda外,发行版还有miniconda,其中只包含了conda管理器,未安装pydata生态圈软件,体积小,方便熟练工按需装载软件。

其他

使用anaconda3自带的jupyter notebook,dataframe默认的输出就没有边框,可视效果很差,在notebook 5.0.0版本中做的更改(来源),有人尝试将notebook降级回4.4版本,懒得折腾,将就看了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容