spatialaudio / nbsphinx

:ledger: Sphinx source parser for Jupyter notebooks
https://nbsphinx.readthedocs.io/
MIT License
451 stars 130 forks source link

Exception occurs when writing ipynb #596

Open pd-nisse opened 3 years ago

pd-nisse commented 3 years ago

When embedding an *.ipynb file through nbsphinx, I receive an ImportError.

I have tried different setups now, also Python3.6.13 as alternative version, but eventually I always land with the same issue. Web searches did not yield any working results. I also tried older versions of prompt_toolkit but the error persisted - or I got an exception because of version validation (when going down to version 1.x.y).

When opening a python shell and simply executing the last imports manually, I do not get an ImportError, which is weird.

Any ideas where the issue could be?

command that is run: sphinx-build -b html -a -E docs/source docs/build

nbsphinx==0.8.7

# Sphinx version: 4.1.2
# Python version: 3.8.10 (CPython)
# Docutils version: 0.16 release
# Jinja2 version: 3.0.1
# Last messages:
#   writing output... [ 18%] index
#   writing output... [ 27%] license
#   writing output... [ 36%] python_api/annotation
#   writing output... [ 45%] python_api/dataset
#   writing output... [ 54%] python_api/projection
#   writing output... [ 63%] python_api/scene
#   writing output... [ 72%] python_api/sensor
#   writing output... [ 81%] python_api/transformation
#   writing output... [ 90%] tutorial/dataset/index
#   writing output... [100%] tutorial/dataset/load_dataset
# Loaded extensions:
#   sphinx.ext.mathjax (4.1.2) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/ext/mathjax.py
#   sphinxcontrib.applehelp (1.0.2) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinxcontrib/applehelp/__init__.py
#   sphinxcontrib.devhelp (1.0.2) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinxcontrib/devhelp/__init__.py
#   sphinxcontrib.htmlhelp (2.0.0) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinxcontrib/htmlhelp/__init__.py
#   sphinxcontrib.serializinghtml (1.1.5) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinxcontrib/serializinghtml/__init__.py
#   sphinxcontrib.qthelp (1.0.3) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinxcontrib/qthelp/__init__.py
#   alabaster (0.7.12) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/alabaster/__init__.py
#   sphinx.ext.autodoc.preserve_defaults (1.0) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/ext/autodoc/preserve_defaults.py
#   sphinx.ext.autodoc.type_comment (4.1.2) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/ext/autodoc/type_comment.py
#   sphinx.ext.autodoc (4.1.2) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/ext/autodoc/__init__.py
#   sphinx_autodoc_typehints (unknown version) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx_autodoc_typehints.py
#   sphinx.ext.napoleon (4.1.2) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/ext/napoleon/__init__.py
#   m2r2 (0.3.1) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/m2r2.py
#   sphinx_rtd_theme (unknown version) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx_rtd_theme/__init__.py
#   nbsphinx (0.8.7) from /home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/nbsphinx.py
Traceback (most recent call last):
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/cmd/build.py", line 280, in build_main
    app.build(args.force_all, filenames)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/application.py", line 337, in build
    self.builder.build_all()
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 257, in build_all
    self.build(None, summary=__('all source files'), method='all')
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 357, in build
    self.write(docnames, list(updated_docnames), method)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 531, in write
    self._write_serial(sorted(docnames))
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/builders/__init__.py", line 541, in _write_serial
    self.write_doc(docname, doctree)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/builders/html/__init__.py", line 622, in write_doc
    self.docwriter.write(doctree, destination)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/docutils/writers/__init__.py", line 78, in write
    self.translate()
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/writers/html.py", line 70, in translate
    self.document.walkabout(visitor)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/docutils/nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/docutils/nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/docutils/nodes.py", line 214, in walkabout
    if child.walkabout(visitor):
  [Previous line repeated 1 more time]
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/docutils/nodes.py", line 206, in walkabout
    visitor.dispatch_visit(self)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/util/docutils.py", line 469, in dispatch_visit
    method(node)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/writers/html5.py", line 417, in visit_literal_block
    highlighted = self.highlighter.highlight_block(
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/highlighting.py", line 149, in highlight_block
    lexer = self.get_lexer(source, lang, opts, force, location)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/sphinx/highlighting.py", line 133, in get_lexer
    lexer = get_lexer_by_name(lang, **opts)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/pygments/lexers/__init__.py", line 115, in get_lexer_by_name
    for cls in find_plugin_lexers():
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/pygments/plugin.py", line 54, in find_plugin_lexers
    yield entrypoint.load()
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2450, in load
    return self.resolve()
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/pkg_resources/__init__.py", line 2456, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/IPython/__init__.py", line 56, in <module>
    from .terminal.embed import embed
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/IPython/terminal/embed.py", line 16, in <module>
    from IPython.terminal.interactiveshell import TerminalInteractiveShell
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/IPython/terminal/interactiveshell.py", line 19, in <module>
    from prompt_toolkit.enums import DEFAULT_BUFFER, EditingMode
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/__init__.py", line 16, in <module>
    from .application import Application
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/application/__init__.py", line 1, in <module>
    from .application import Application
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/application/application.py", line 42, in <module>
    from prompt_toolkit.buffer import Buffer
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/buffer.py", line 31, in <module>
    from .application.current import get_app
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/application/current.py", line 11, in <module>
    from prompt_toolkit.input.base import Input
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/input/__init__.py", line 1, in <module>
    from .base import DummyInput, Input
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/input/base.py", line 8, in <module>
    from prompt_toolkit.key_binding import KeyPress
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/key_binding/__init__.py", line 1, in <module>
    from .key_bindings import (
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/key_binding/key_bindings.py", line 53, in <module>
    from prompt_toolkit.filters import FilterOrBool, Never, to_filter
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/filters/__init__.py", line 19, in <module>
    from .app import *
  File "/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/filters/app.py", line 6, in <module>
    from prompt_toolkit.application.current import get_app
ImportError: cannot import name 'get_app' from partially initialized module 'prompt_toolkit.application.current' (most likely due to a circular import) (/home/user/.virtualenvs/doc_env/lib/python3.8/site-packages/prompt_toolkit/application/current.py)

Thanks!

pd-nisse commented 3 years ago

I was able to solve the issue by explicitly installing a version of prompt-toolkit<3.0.0

pip install -U "prompt-toolkit<3.0.0"

mgeier commented 2 years ago

Which was the version that didn't work?

These seem to be the versions supported by IPython: https://github.com/ipython/ipython/blob/98941e549d4d3ceefc7081f368d5d02e38e47cf4/setup.py#L199