macOS升级后Jupyter Notebook报错解决

王树义 玉树芝兰 2017-05-30

我一般不太关注App Store的升级提示,但是看见了就升级。这倒不是为了赶时髦,而是我知道不升级的话,系统漏洞可能会被攻击。

之前的macOS升级还都比较顺利。软件兼容性也都没啥问题。

今天不一样了。

升级到了10.12.5后,像往常一样执行:

jupyter notebook

结果突然报错,吓了我一跳:

0:97: execution error: “"http://localhost:8889/tree?token=760a6d28d716f1671f0cf72f82a3cd5db958743fa86112f4"”不理解“open location”信息。 (-1708)

对我来说,Jupyter Notebook属于学习工作必需品。大意不得。

好在看了看信息,似乎服务已经在端口8888上面运行了。

只是平时执行上述命令,Chrome就能自动弹出来,开启笔记本列表。现在好像这一步出问题了。没关系,我就手动执行吧。在浏览器里面输入:

 [localhost:8888](http://localhost:8888) 

结果,笔记却没能直接出来。

让我输入密码。我设过密码吗?尝试了各种组合,均告失败。

于是我上网查询资料。还好,综合各方观点,找到了解决办法。

我遭遇的是两个问题:

  1. jupyter近期更新了安全机制,默认需要输入密码才能使用;

  2. 浏览器无法自行开启,确实是因为macOS 10.12.5环境的问题。


解决方法很简单。

在Jupyter的配置目录

~/.jupyter

下面新建一个文件,名称是:

jupyter_notebook_config.py

在这个文件里面加入3行代码:

c.NotebookApp.browser = u'Safari'
c.NotebookApp.token = ''
c.NotebookApp.password = ''

保存文件,重新执行:

jupyter notebook

效果是这样的:

各路豪杰尝试过多种方法,可是目前只有Safari浏览器可以通过这种方式调用。Google Chrome可能还得等几天,看看根据macOS的新版本,Jupyter能否做出一些升级调整。