在以下路径中找不到名称为“ lab”的模板子目录

问题描述

我正在运行python azure函数,该函数正在通过nbconvert API运行jupyter笔记本。这工作了一段时间,尽管没有部署新代码,但我开始出现以下错误

在以下路径中找不到名称为'lab'的模板子目录:\ n \ t / home / .local / share / jupyter \ n \ t / usr / local / share / jupyter \ n \ t / usr / share / jupyter

我用于实现此目的的代码是:

from nbconvert.preprocessors import ExecutePreprocessor
from nbconvert import HTMLExporter

...

dl = DictLoader({'footer':
"""
{%- extends 'full.tpl' -%}

{% block input_group %}
    {%- if cell.Metadata.get('nbconvert',{}).get('show_code',False) -%}
        ((( super() )))
    {%- endif -%}
{% endblock input_group %}
{% block output_group %}
    <style> .output_prompt{visibility:hidden;}</style>
    {{ super() }}
{% endblock output_group %}
"""})

...

html_exporter = HTMLExporter(extra_loaders=[dl],template_file='footer')
html_exporter.template_name = 'classic'
with open(JUPYTER_DIR + NOTEBOOK_NAME) as f:
    nb = nbformat.read(f,as_version=4)

ep = ExecutePreprocessor(timeout=600,kernel_name='python')
ep.preprocess(nb,{'Metadata': {'path': JUPYTER_DIR}})
(body,resources) = html_exporter.from_notebook_node(nb)

functionapp正在运行以下内容

python3.6
nbconvert6.0.3
jupyter-lab0.1.1

我尝试搜索错误,到目前为止,我发现的最接近的错误this,虽然相似,但是没有得到答案,也不完全相同。以为我会在这里发帖,看看是否有人知道如何解决,或者如果我设法解决此问题,我可以进行更新。

我很困惑,因为lab不是我熟悉的关键字(可能是jupyterlab之外的关键字),并且不在代码中使用。

至于提到的路径:

  • home/.local/share/jupyter/存在并包含nbconvert/templates/html
  • usr/local/share/jupyterusr/share/jupyter不存在

在此先感谢您的帮助!

解决方法

将 nbconvert 升级到 6.0.8 后,我遇到了同样的问题。

回滚到 nbconvert 5.6.1 为我解决了这个问题。

pip uninstall nbconvert
pip install nbconvert==5.6.1

,

在 Mac 上,如果您在用户模式下使用 pip3 安装了 jupyter

ln -s ~/Library/Python/3.8/share/jupyter/nbconvert ~/Library/Jupyter/nbconvert

用合适的版本替换3.8

,

我遇到了完全相同的错误。我假设默认/内置模板只是在anaconda安装过程中安装的。我认为我们必须查看旧版本的jupyter notebook / nbconvert / anaconda,然后复制并粘贴模板文件。

,

pip install -U nbconvert安装 .../site-packages/share/jupyter/nbconvert/templates/
但是jupyter nbconvert my.ipynb --to python不在那儿-

# ValueError: No template sub-directory with name 'base' found in the following paths:

/Users/myuserid/Library/Jupyter  # mac
/Library/Frameworks/Python.framework/Versions/3.7/share/jupyter
/usr/local/share/jupyter
/usr/share/jupyter

在其中之一中建立到.../site-packages/.../templates的符号链接,例如

cd $HOME/Library/Jupyter/nbconvert  # mac,other platforms dunno
mv templates templates-tmp  # empty
ln -s .../site-packages/share/jupyter/nbconvert/templates .
ls templates/
# asciidoc/  classic/      html/  latex/     python/  rst/
# base/    compatibility/  lab/   markdown/  reveal/  script/
,

对我来说,可以使用以下方法卸载和安装nbconvert:

pip uninstall nbconvert
pip install nbconvert

已修复此错误。

,

根据您的安装位置,您可能需要调整下面的“路径”和“目标”变量。在我的情况下(Windows 10 从 Microsoft 商店安装了 python 并通过 pip 安装了 jupyter)以下解决了 jupyter 找不到 nbconvert 的问题。您将需要使用 elevated power shell (PS) 在 APPDATA 中创建链接

PS > $path=$env:APPDATA+"\jupyter\nbconvert"
PS > $target=$env:LOCALAPPDATA+"\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\share\jupyter\nbconvert"
PS > New-Item -ItemType SymbolicLink -path "$path" -target "$target"

这应该在适当的位置创建链接

,

在 Mac 上,与 @denis 解决方案非常相似,只是位置不同:

cd /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/share/jupyter/nbconvert/
mv templates templates-tmp
ln -s /opt/homebrew/share/jupyter/nbconvert/templates

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...