【问题标题】:No template sub-directory with name 'lab' found in the following paths在以下路径中找不到名为“lab”的模板子目录
【发布时间】:2021-01-05 13:25:35
【问题描述】:

我正在运行一个 python azure 函数,该函数通过nbconvert API 运行一个 jupyter notebook。这工作了一段时间,虽然没有部署新代码我开始收到以下错误:

No template sub-directory with name 'lab' found in the following paths:
    /home/.local/share/jupyter
    /usr/local/share/jupyter
    /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/jupyter & usr/share/jupyter 不存在

提前感谢您的帮助!

【问题讨论】:

    标签: python jupyter-notebook azure-functions jupyter nbconvert


    【解决方案1】:

    有同样的问题 (Mac Monterey 12.01)

    从 GitHub 下载 nbconvert 并安装为我解决了它: 基于:https://github.com/jupyter/nbconvert

    【讨论】:

      【解决方案2】:

      根据您的安装位置,您可能需要调整下面的“路径”和“目标”变量。在我的情况下(从 Microsoft 商店安装 python 并通过 pip 安装 jupyter 的 Windows 10)以下解决了 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"
      

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

      【讨论】:

        【解决方案3】:

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

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

        只需将 3.8 替换为合适的版本

        【讨论】:

          【解决方案4】:

          在 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
          

          【讨论】:

            【解决方案5】:

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

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

            pip uninstall nbconvert
            pip install nbconvert==5.6.1

            【讨论】:

              【解决方案6】:

              对我来说,卸载和安装 nbconvert 使用:

              pip uninstall nbconvert
              pip install nbconvert
              

              修正了这个错误。

              【讨论】:

                【解决方案7】:

                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/
                

                【讨论】:

                • 在 Windows 10 上,模板文件安装在:C:\Users\{username}\AppData\Roaming\Python\share\jupyter\nbconvert 我将它们复制到:C:\Users\{username }\AppData\Roaming\jupyter\nbconvert\templates
                • @JeremyWhitcher 您的评论解决了我的问题。我真的很感谢你。
                • @JeremyWhitcher 非常感谢。您的建议帮助我将笔记本下载为 HTML 文件。
                【解决方案8】:

                我得到了同样的错误。我假设在 anaconda 安装期间刚刚安装了默认/内置模板。我认为我们必须查看旧版本的 jupyter notebook / nbconvert / anaconda 并复制并粘贴模板文件。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2017-03-05
                  • 2013-06-17
                  • 1970-01-01
                  • 1970-01-01
                  • 2016-06-18
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-12-07
                  相关资源
                  最近更新 更多