数据分析和AI方面的活动可能用到 Anaconda ,其安装时会自动去扫描识别本机的一些软件,比如代码编辑器。默认也会安装 jupyter notebook ,但在使用时可能会遇到在 jupyter notebook 上执行 python 代码无输出的问题,这里记录下问题的解决思路及方法。
问题描述
在打开 jupyter notebook 后,使用 python3 编辑代码,执行无输出。
解决过程及思路
中文用户名
在网络上找到一些关于 jupyter notebook 不能输出的问题解决方法中,有看到说是与中文用户名有关,Anaconda 不支持中文字符的用户目录,需要对用户名进行重命名,并对用户目录及注册表信息进行修改,修改完成后就解决问题了。
不知是否是问题原因的不同,我也是使用的中文用户名,但这个方式没有解决我的问题。
Anaconda 安装选项
对于安装选项问题,一般是在此前已经安装了 python 环境的情况下会有疑惑。
Anaconda 在安装过程中会安装其自带的 python 版本,在安装时会有两个选项
但这两个选项对于 jupyter notebook 的使用没有太多的影响,主要是在于对程序的启动方式上,勾选后,就可以从命令行里直接运行打开程序了,但不勾选,也可以打开,就是要到指定目录下才能打开而已。
一般在安装程序后,在开始菜单里都会有这个快捷方式了。
代码运行内核
查找资料及对界面的分析,jupyter notebook 上对于 python 代码的使用中有一个 kernel 的选项,代码的执行都是在这个 kernel 上执行。
对比后发现的确是没有显示这个 kernel 。
原因可能是 Anaconda 在安装 jupyter notebook 时,有部分的插件没有安装到。
对 jupyter notebook 进行重装。
pip install jupyter notebook
安装完成后打开界面,出现了 kernel 。
继续测试输出,仍然是有问题,代码没有执行。
kernel 是代码执行必要的,也是导致代码执行问题的原因之一,未能解决问题应是还有其他问题。
PS:后面发现如果程序自身没有正确启动,也不会出现这个 kernel ,若出现之前可以执行代码,但突然又不行了,可能是 kernel 出了问题,在 kernel 菜单下有重启 kernel 的选项,或者关闭重新打开后就可以解决。
关联插件版本
通过开始菜单的快捷方式打开 jupyter notebook, 在执行代码无输出后,其程序运行会话框就自动关闭了。
通过 CMD 命令行执行 jupyter notebook ,以便查看执行报错。
在执行代码时,发现有两个 Bad file descriptor 的报错。
Bad file descriptor (C:\ci\zeromq_16027xxxx\work\src\epoll.cpp:100)
Bad file descriptor (C:\ci\zeromq_16027xxxx\work\src\epoll.cpp:100)
搜集资料,这个报错可能是因为 python pyzmq 插件的版本与其他依赖插件不匹配导致。
pyzmq 的版本变更可以在这里查看 https://pyzmq.readthedocs.io/en/latest/
卸载插件,然后制定安装一个低版本的尝试下。
pip uninstall pyzmq
pip install pyzmq==19.0.2
再次启动 jupyter notebook 后进行测试,可正常输出,问题解决。
一些额外情况
对于未安装过 python 环境的电脑,一般都没有前面的问题。
有看到一些帖子上说的原因是 Anaconda 安装 jupyter 时,没有安装 jupyter notebook ,导致的代码执行输出问题,重新安装 jupyter 就好了。。。
这个回答应该不对应代码执行问题。没有安装 notebook 的话,应是在打开 jupyter notebook 时会出现报错,而不是在代码执行时再报错。