最近又手贱的升级某个包导致了在使用Jupyter notebook中遇到了各种坑坑😂。。。掌柜可能自带填坑属性👀,所以这里对常见的十种Jupyter坑做个总结!

PS:造成同一个报错的原因有很多种,掌柜这里列出的解决办法也不一定对所有场景有效,谢谢理解!

PPS: 掌柜这里是Windows10的64位操作系统,且是在Anaconda Prompt中安装各种包的。

  1. Exception: Jupyter command ‘Jupyter notebook’ not found.

    这是因为掌柜在卸载某些包的时候Jupyter包也被一起卸载了,结果就出现找不到Jupyter notebook启动命令的情况。。。
    解决办法:输入
conda install jupyter

即可解决。
如果你是在CMD(命令行)环境中安装的,那么就输入命令:

pip install jupyter
  1. import win32api
    ImportError:DLL load failed.找不到指定程序


    或者这样报错:

    造成这个原因也有很多,其中有一种是有多个dll文件所以会找不到指定程序;另一种是本身缺少pywin32这个包造成的。
    解决办法:如果是因为多次安装、卸载包导致存在多个win32文件,可以看看哪些是之前安装的,删除掉;
    如果是本身缺少pywin32包,那么就直接安装即可:
conda install -c conda-forge pywin32

或是在命令行

pip install pywin32
  1. RuntimeError:This is event loop is already running.

    或者在jupyter notebook显示下面这样👇:
    发生这样的原因也很多,多数是因为版本的冲突导致的,比如你安了Python3.7,但是你的tornado包是4.5.3,这两个就会发生冲突,一个版本太高,一个太低,里面的某些方法在旧版本中并没有。
    解决办法:就是统一你的版本,如果是版本太低就升级你的包,比如安装的Python3.7,那就安Tornado 5.1 版本和 ipykernel 4.8.2 版本。反之就降级你的tornado包,多数降到4.5.3版本即可。
    掌柜这里一查发现是版本太低了。。。

    所以需要升级到至少tornado== 4.5.3才行。
    用了如下命令成功解决:
pip install tornado==4.5.3
  1. python.exe - Entry Point Not Found
    具体报错看下图:

    出现这个报错的原因跟2有点类似,就是因为存在多个pythoncom36.dll文件导致的。
    所以解决办法
    先去搜你的Anaconda文件夹下有多少个36.dll文件,搜出来后用最新安装的pywin32文件夹下面的pythoncom36.dll文件去覆盖其他多出来的那几个之前的dll文件,保持统一即可。
    可以参考这个博文有更详细的说明:👉由换jupyter notebook的主题引发的一部debug的连续剧(二)。

  2. ValueError:signal only works in main thread

    这个错误发生的原因也是因为两个包:pyzmq和ipykernel 的版本不对,又导致了冲突。
    解决办法:使用如下命令即可

pip install"pyzmq==17.0.0""ipykernel==4.8.2"

掌柜的一查是自己的版本太高了。。。人家带不动😂所以需要降级到上面的版本就成功解决了!


(未完待续。。。)

感谢下面👇的参考资料:
Kernel error in jupyter notebook
Can’t invoke asyncio event_loop after tornado 5.0 update
Jupyter Notebook “signal only works in main thread”