首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Notebook单元在第一个错误后不会运行,直到PyQ内核重新启动

Notebook单元在第一个错误后不会运行,直到PyQ内核重新启动
EN

Stack Overflow用户
提问于 2018-12-12 17:04:49
回答 1查看 345关注 0票数 0

我正在运行一台带有PyQ内核的jupyter笔记本电脑,可以同时运行python和Q代码。但是:每当一个单元产生错误(比如调用nonexisting_function())时,在我重新启动内核之前,不会执行更多的单元。相比之下,使用Python内核,我也可以在出错后运行其他(或相同)单元,我认为这是正常行为。

我在64位ubuntu上使用带有虚拟环境(mypyq)的miniconda3。

代码语言:javascript
运行
复制
(mypyq) user@workstation:~$ conda --version
conda 4.5.11
(mypyq) user@workstation:~$ conda list
# packages in environment at /home/user/miniconda3/envs/mypyq:
#
# Name                    Version                   Build  Channel
<lines skipped>
kdb                       3.6                  2018.10.23    kx
pyq                       4.1.4            py36h39e3cac_0    enlnt
pyq-kernel                1.0                       <pip>
python                    3.6.7                h0371630_0  
(mypyq) user@workstation:~$ jupyter notebook --debug
<lines skipped>

在笔记本中运行6*7

代码语言:javascript
运行
复制
[D 09:37:54.476 NotebookApp] activity on ...: status
[D 09:37:54.476 NotebookApp] activity on ...: execute_input
[D 09:37:54.477 NotebookApp] activity on ...: execute_result
[D 09:37:54.479 NotebookApp] activity on ...: status

单元格输出为42,到目前为止一切正常。

现在在笔记本中运行nonexisting()

代码语言:javascript
运行
复制
[D 09:38:38.266 NotebookApp] activity on ...: status
[D 09:38:38.267 NotebookApp] activity on ...: execute_input
[D 09:38:38.315 NotebookApp] activity on ...: error
[D 09:38:38.317 NotebookApp] activity on ...: status

Notebook单元格输出:

代码语言:javascript
运行
复制
------------------------------------
NameError   Traceback (most recent call last)
<ipython-input-2-124a31d9d771> in <module>
----> 1 nonexisting()

NameError: name 'nonexisting' is not defined

再次运行6*7单元:

代码语言:javascript
运行
复制
[D 09:39:29.799 NotebookApp] activity on ...: status
[D 09:39:29.799 NotebookApp] activity on ...: status

我在控制台里至少少了...: execute_result。而且在我重启内核之前,笔记本中也没有输出。

这不会发生在Python内核中,只会发生在PyQ内核中。在控制台中运行PyQ也没问题:

代码语言:javascript
运行
复制
(mypyq) user@workstation:~$ pyq
Python 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 19:19:38) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> q('9#til 3')
k('0 1 2 0 1 2 0 1 2')
>>> nonexisting()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'nonexisting' is not defined
>>> 6*7
42
>>> exit()

IPython也没问题:

代码语言:javascript
运行
复制
(mypyq) user@workstation:~$ pyq -m IPython
Python 3.6.7 |Anaconda, Inc.| (default, Oct 23 2018, 19:19:38) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: %load_ext pyq.magic                                                                                                          

In [2]: from pyq import q                                                                                                            

In [3]: q.til(10)                                                                                                                    
Out[3]: 0 1 2 3 4 5 6 7 8 9

In [4]: nonexisting()                                                                                                                
-------------------------------------------------------
NameError             Traceback (most recent call last)
<ipython-input-4-124a31d9d771> in <module>
----> 1 nonexisting()

NameError: name 'nonexisting' is not defined

In [5]: q.til(10)                                                                                                                    
Out[5]: 0 1 2 3 4 5 6 7 8 9

In [6]: exit()

在运行错误单元后,当我使用Ctrl-C关闭jupyter笔记本服务器时,它报告超时并杀死内核。

代码语言:javascript
运行
复制
Shutdown this notebook server (y/[n])? y
[C 11:03:05.086 NotebookApp] Shutdown confirmed
[I 11:03:05.086 NotebookApp] Shutting down 1 kernel
[D 11:03:10.100 NotebookApp] Kernel is taking too long to finish, killing
[I 11:03:10.106 NotebookApp] Kernel shutdown:
EN

回答 1

Stack Overflow用户

发布于 2018-12-20 21:22:42

此错误已在pyq-kernel 1.0.1, which was recently released中修复。谢谢你的报告。

要升级,请运行:

代码语言:javascript
运行
复制
pip install -U pyq-kernel
pyq -m pyq.kernel install

将来,请随时在PyQ project repository中打开问题,以便更快地响应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53739406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档