我正在尝试使用批处理文件和Windows Task Manager自动执行IPython脚本。经过大量挖掘,我发现您可以使用任务管理器触发BAT,并通过执行nbconvert
包来运行Jupyter Notebook,而无需交互位。
在BAT中,我的代码首先是“ 将Windows cmd转换为Anaconda提示”,其代码为:<anaconda3 path>\Scripts\activate.bat <anaconda3 path>
(没有正规的CS教育,请耐心等待。)
该行允许我在Windows cmd之外运行conda
和jupyter
命令。然后我跑
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
答案 0 :(得分:1)
通过将Anaconda3/Library/Bin
路径添加到c/windows/system32
路径来解决。由于DLL错误导致发生超时,在命令行中作为超时返回。
答案 1 :(得分:1)
对于使用正确路径遇到此错误的任何其他人,我能够使用标志 --ExecutePreprocessor.timeout=300