从命令行运行iPython nbconvert时超时

时间:2019-01-04 22:20:59

标签: windows automation anaconda jupyter-notebook nbconvert

我正在尝试使用批处理文件和Windows Task Manager自动执行IPython脚本。经过大量挖掘,我发现您可以使用任务管理器触发BAT,并通过执行nbconvert包来运行Jupyter Notebook,而无需交互位。

在BAT中,我的代码首先是“ 将Windows cmd转换为Anaconda提示”,其代码为:<anaconda3 path>\Scripts\activate.bat <anaconda3 path>

(没有正规的CS教育,请耐心等待。)

该行允许我在Windows cmd之外运行condajupyter命令。然后我跑

jupyter nbconvert --execute --ExecutePreprocessor.enabled=True --ExecutePreprocessor.timeout=60 <Notebook>

发生这种情况时,我一直收到超时错误。是的,我可以调整计时器,但是在将计时器设置为10个小时并在早上回来之前,我希望对nbconvert幕后发生的事情有所了解,并可能对如何使它工作。通过Jupyter Notebook运行.ipynb文件时,效果很好。但是,有时脚本会尝试加载几GB的数据,每次我运行它大约要花费20分钟。

为此,当nbconvert与预处理器接合时,它们是否抢先运行整个脚本?我正在努力寻找原因,以解释为什么在执行nbconvert命令时什么都不打开,ping,运行,更新等...。我预计至少RAM使用率会上升,但据我所知,这两种情况均不会发生。

该如何解决?执行nbconvert时幕后发生了什么?

跟踪:

C:\Users\User>jupyter nbconvert --execute "C:\Users\User\Desktop\_for_Python\CBSA.ipynb"  
[NbConvertApp] Converting notebook C:\Users\User\Desktop\_for_Python\CBSA.ipynb to html  
[NbConvertApp] Executing notebook with kernel: python3  
[NbConvertApp] ERROR | Timeout waiting for execute reply (30s).  
Traceback (most recent call last):  
  File "C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site-packages\nbconvert\preprocessors\execute.py", line 423, in _wait_for_reply  
    msg = self.kc.shell_channel.get_msg(timeout=timeout)  
  File "C:\Users\User\AppData\Local\Continuum\anaconda3\lib\site-packages\jupyter_client\blocking\channels.py", line 57, in get_msg  
    raise Empty  
_queue.Empty

2 个答案:

答案 0 :(得分:1)

通过将Anaconda3/Library/Bin路径添加到c/windows/system32路径来解决。由于DLL错误导致发生超时,在命令行中作为超时返回。

答案 1 :(得分:1)

对于使用正确路径遇到此错误的任何其他人,我能够使用标志 --ExecutePreprocessor.timeout=300