jupyter / nbclassic

Jupyter Notebook as a Jupyter Server extension
https://nbclassic.readthedocs.io/en/latest
BSD 3-Clause "New" or "Revised" License
73 stars 63 forks source link

Markdown/HTML images not displaying #89

Closed alexandermichels closed 1 year ago

alexandermichels commented 2 years ago

Description

When using nbclassic (0.3.5 tested, others may be affected) images in notebooks made with Markdown (![](logo.png)) and HTML (<img src="logo.png">) do not work. Markdown images show a blank cell and HTML images show a broken image icon. Clicking on the image and "Open image in New Tab" directs to "/edit/logo.png". This same bug was reported in the jupyter/notebook repo (https://github.com/jupyter/notebook/issues/6267), but through some debugging I believe it is an nbclassic issue. I have been able to reproduce the issue running the container itself locally and on JupyterHub.

Reproduce

  1. Launch the container. I used the command: docker run -it -p 8888:8888 -p 8889:8889 jupyter/minimal-notebook:2022-01-12. I mapped two ports because I used the terminal in Jupyter to run jupyter nbclassic.
  2. Open the terminal and run jupyter nbclassic.
  3. Create a notebook with the default Python 3 kernel.
  4. Get some image. I used !wget -O logo.png cybergisx.cigi.illinois.edu/hub/logo.
  5. Try to display the image with ![](logo.png) or <img src="logo.png">.

We had this issue when we upgraded our JupyterHub (https://cybergisx.cigi.illinois.edu/) and debugged it through a lot of trial and error.

Expected behavior

I expect the images to display just as they do in jupyter/notebook. The image below shows the result from the reproduce procedure with notebook on the left and nbclassic on the right, both displaying the same notebook:

notebookvsnbclassic

Context

Troubleshoot Output
$PATH:
        /opt/conda/bin
        /opt/conda/condabin
        /opt/conda/bin
        /usr/local/sbin
        /usr/local/bin
        /usr/sbin
        /usr/bin
        /sbin
        /bin

sys.path:
        /opt/conda/bin
        /opt/conda/lib/python39.zip
        /opt/conda/lib/python3.9
        /opt/conda/lib/python3.9/lib-dynload
        /opt/conda/lib/python3.9/site-packages

sys.executable:
        /opt/conda/bin/python

sys.version:
        3.9.7 | packaged by conda-forge | (default, Sep 29 2021, 19:20:46)
        [GCC 9.4.0]

platform.platform():
        Linux-5.4.0-99-generic-x86_64-with-glibc2.31

which -a jupyter:
        /opt/conda/bin/jupyter
        /opt/conda/bin/jupyter

pip list:
        Package                       Version
        ----------------------------- ---------
        alembic                       1.7.5
        anyio                         3.5.0
        argon2-cffi                   21.3.0
        argon2-cffi-bindings          21.2.0
        async-generator               1.10
        attrs                         21.4.0
        Babel                         2.9.1
        backcall                      0.2.0
        backports.functools-lru-cache 1.6.4
        bleach                        4.1.0
        blinker                       1.4
        brotlipy                      0.7.0
        certifi                       2021.10.8
        certipy                       0.1.3
        cffi                          1.15.0
        charset-normalizer            2.0.10
        colorama                      0.4.4
        conda                         4.11.0
        conda-package-handling        1.7.3
        cryptography                  36.0.1
        debugpy                       1.5.1
        decorator                     5.1.1
        defusedxml                    0.7.1
        entrypoints                   0.3
        flit_core                     3.6.0
        greenlet                      1.1.2
        idna                          3.1
        importlib-metadata            4.10.0
        importlib-resources           5.4.0
        ipykernel                     6.6.1
        ipython                       7.31.0
        ipython-genutils              0.2.0
        jedi                          0.18.1
        Jinja2                        3.0.3
        json5                         0.9.5
        jsonschema                    4.3.3
        jupyter-client                7.1.0
        jupyter-core                  4.9.1
        jupyter-server                1.13.1
        jupyter-telemetry             0.1.0
        jupyterhub                    2.0.2
        jupyterlab                    3.2.6
        jupyterlab-pygments           0.1.2
        jupyterlab-server             2.10.3
        libmambapy                    0.19.1
        Mako                          1.1.6
        mamba                         0.19.1
        MarkupSafe                    2.0.1
        matplotlib-inline             0.1.3
        mistune                       0.8.4
        nbclassic                     0.3.5
        nbclient                      0.5.9
        nbconvert                     6.4.0
        nbformat                      5.1.3
        nest-asyncio                  1.5.4
        notebook                      6.4.6
        oauthlib                      3.1.1
        packaging                     21.3
        pamela                        1.0.0
        pandocfilters                 1.5.0
        parso                         0.8.3
        pexpect                       4.8.0
        pickleshare                   0.7.5
        pip                           21.3.1
        prometheus-client             0.12.0
        prompt-toolkit                3.0.24
        psutil                        5.9.0
        ptyprocess                    0.7.0
        pycosat                       0.6.3
        pycparser                     2.21
        pycurl                        7.44.1
        Pygments                      2.11.2
        PyJWT                         2.3.0
        pyOpenSSL                     21.0.0
        pyparsing                     3.0.6
        pyrsistent                    0.18.0
        PySocks                       1.7.1
        python-dateutil               2.8.2
        python-json-logger            2.0.1
        pytz                          2021.3
        pyzmq                         22.3.0
        requests                      2.27.1
        ruamel.yaml                   0.17.19
        ruamel.yaml.clib              0.2.6
        ruamel-yaml-conda             0.15.80
        Send2Trash                    1.8.0
        setuptools                    60.5.0
        six                           1.16.0
        sniffio                       1.2.0
        SQLAlchemy                    1.4.29
        terminado                     0.12.1
        testpath                      0.5.0
        tornado                       6.1
        tqdm                          4.62.3
        traitlets                     5.1.1
        urllib3                       1.26.8
        wcwidth                       0.2.5
        webencodings                  0.5.1
        websocket-client              1.2.3
        wheel                         0.37.1
        zipp                          3.7.0

conda list:
        # packages in environment at /opt/conda:
        #
        # Name                    Version                   Build  Channel
        _libgcc_mutex             0.1                 conda_forge    conda-forge
        _openmp_mutex             4.5                       1_gnu    conda-forge
        alembic                   1.7.5              pyhd8ed1ab_0    conda-forge
        anyio                     3.5.0            py39hf3d152e_0    conda-forge
        argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
        argon2-cffi-bindings      21.2.0           py39h3811e60_1    conda-forge
        async_generator           1.10                       py_0    conda-forge
        attrs                     21.4.0             pyhd8ed1ab_0    conda-forge
        babel                     2.9.1              pyh44b312d_0    conda-forge
        backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
        backports                 1.0                        py_2    conda-forge
        backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
        bleach                    4.1.0              pyhd8ed1ab_0    conda-forge
        blinker                   1.4                        py_1    conda-forge
        brotlipy                  0.7.0           py39h3811e60_1003    conda-forge
        bzip2                     1.0.8                h7f98852_4    conda-forge
        c-ares                    1.18.1               h7f98852_0    conda-forge
        ca-certificates           2021.10.8            ha878542_0    conda-forge
        certifi                   2021.10.8        py39hf3d152e_1    conda-forge
        certipy                   0.1.3                      py_0    conda-forge
        cffi                      1.15.0           py39h4bc2ebd_0    conda-forge
        charset-normalizer        2.0.10             pyhd8ed1ab_0    conda-forge
        colorama                  0.4.4              pyh9f0ad1d_0    conda-forge
        conda                     4.11.0           py39hf3d152e_0    conda-forge
        conda-package-handling    1.7.3            py39h3811e60_1    conda-forge
        configurable-http-proxy   4.5.0           node17_h7e777a6_2    conda-forge
        cryptography              36.0.1           py39h95dcef6_0    conda-forge
        debugpy                   1.5.1            py39he80948d_0    conda-forge
        decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
        defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
        entrypoints               0.3             pyhd8ed1ab_1003    conda-forge
        flit-core                 3.6.0              pyhd8ed1ab_0    conda-forge
        greenlet                  1.1.2            py39he80948d_1    conda-forge
        icu                       69.1                 h9c3ff4c_0    conda-forge
        idna                      3.1                pyhd3deb0d_0    conda-forge
        importlib-metadata        4.10.0           py39hf3d152e_0    conda-forge
        importlib_resources       5.4.0              pyhd8ed1ab_0    conda-forge
        ipykernel                 6.6.1            py39hef51801_0    conda-forge
        ipython                   7.31.0           py39hf3d152e_0    conda-forge
        ipython_genutils          0.2.0                      py_1    conda-forge
        jedi                      0.18.1           py39hf3d152e_0    conda-forge
        jinja2                    3.0.3              pyhd8ed1ab_0    conda-forge
        json5                     0.9.5              pyh9f0ad1d_0    conda-forge
        jsonschema                4.3.3              pyhd8ed1ab_0    conda-forge
        jupyter_client            7.1.0              pyhd8ed1ab_0    conda-forge
        jupyter_core              4.9.1            py39hf3d152e_1    conda-forge
        jupyter_server            1.13.1             pyhd8ed1ab_0    conda-forge
        jupyter_telemetry         0.1.0              pyhd8ed1ab_1    conda-forge
        jupyterhub                2.0.2                hd8ed1ab_0    conda-forge
        jupyterhub-base           2.0.2              pyhd8ed1ab_0    conda-forge
        jupyterlab                3.2.6              pyhd8ed1ab_0    conda-forge
        jupyterlab_pygments       0.1.2              pyh9f0ad1d_0    conda-forge
        jupyterlab_server         2.10.3             pyhd8ed1ab_0    conda-forge
        krb5                      1.19.2               hcc1bbae_3    conda-forge
        ld_impl_linux-64          2.36.1               hea4e1c9_2    conda-forge
        libarchive                3.5.2                hccf745f_1    conda-forge
        libcurl                   7.81.0               h2574ce0_0    conda-forge
        libedit                   3.1.20191231         he28a2e2_2    conda-forge
        libev                     4.33                 h516909a_1    conda-forge
        libffi                    3.4.2                h7f98852_5    conda-forge
        libgcc-ng                 11.2.0              h1d223b6_11    conda-forge
        libgomp                   11.2.0              h1d223b6_11    conda-forge
        libiconv                  1.16                 h516909a_0    conda-forge
        libmamba                  0.19.1               h3985d26_0    conda-forge
        libmambapy                0.19.1           py39h8bfa403_0    conda-forge
        libnghttp2                1.43.0               h812cca2_1    conda-forge
        libsodium                 1.0.18               h36c2ea0_1    conda-forge
        libsolv                   0.7.19               h780b84a_5    conda-forge
        libssh2                   1.10.0               ha56f1ee_2    conda-forge
        libstdcxx-ng              11.2.0              he4da1e4_11    conda-forge
        libuv                     1.42.0               h7f98852_0    conda-forge
        libxml2                   2.9.12               h885dcf4_1    conda-forge
        libzlib                   1.2.11            h36c2ea0_1013    conda-forge
        lz4-c                     1.9.3                h9c3ff4c_1    conda-forge
        lzo                       2.10              h516909a_1000    conda-forge
        mako                      1.1.6              pyhd8ed1ab_0    conda-forge
        mamba                     0.19.1           py39hfa8f2c8_0    conda-forge
        markupsafe                2.0.1            py39h3811e60_1    conda-forge
        matplotlib-inline         0.1.3              pyhd8ed1ab_0    conda-forge
        mistune                   0.8.4           py39h3811e60_1005    conda-forge
        nbclassic                 0.3.5              pyhd8ed1ab_0    conda-forge
        nbclient                  0.5.9              pyhd8ed1ab_0    conda-forge
        nbconvert                 6.4.0            py39hf3d152e_0    conda-forge
        nbformat                  5.1.3              pyhd8ed1ab_0    conda-forge
        ncurses                   6.2                  h58526e2_4    conda-forge
        nest-asyncio              1.5.4              pyhd8ed1ab_0    conda-forge
        nodejs                    17.1.0               h8ca31f7_2    conda-forge
        notebook                  6.4.6              pyha770c72_0    conda-forge
        oauthlib                  3.1.1              pyhd8ed1ab_0    conda-forge
        openssl                   1.1.1l               h7f98852_0    conda-forge
        packaging                 21.3               pyhd8ed1ab_0    conda-forge
        pamela                    1.0.0                      py_0    conda-forge
        pandoc                    2.16.2               h7f98852_0    conda-forge
        pandocfilters             1.5.0              pyhd8ed1ab_0    conda-forge
        parso                     0.8.3              pyhd8ed1ab_0    conda-forge
        pexpect                   4.8.0              pyh9f0ad1d_2    conda-forge
        pickleshare               0.7.5                   py_1003    conda-forge
        pip                       21.3.1             pyhd8ed1ab_0    conda-forge
        prometheus_client         0.12.0             pyhd8ed1ab_0    conda-forge
        prompt-toolkit            3.0.24             pyha770c72_0    conda-forge
        psutil                    5.9.0            py39h3811e60_0    conda-forge
        ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
        pybind11-abi              4                    hd8ed1ab_3    conda-forge
        pycosat                   0.6.3           py39h3811e60_1009    conda-forge
        pycparser                 2.21               pyhd8ed1ab_0    conda-forge
        pycurl                    7.44.1           py39h72e3413_1    conda-forge
        pygments                  2.11.2             pyhd8ed1ab_0    conda-forge
        pyjwt                     2.3.0              pyhd8ed1ab_1    conda-forge
        pyopenssl                 21.0.0             pyhd8ed1ab_0    conda-forge
        pyparsing                 3.0.6              pyhd8ed1ab_0    conda-forge
        pyrsistent                0.18.0           py39h3811e60_0    conda-forge
        pysocks                   1.7.1            py39hf3d152e_4    conda-forge
        python                    3.9.7           hb7a2778_3_cpython    conda-forge
        python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
        python-json-logger        2.0.1              pyh9f0ad1d_0    conda-forge
        python_abi                3.9                      2_cp39    conda-forge
        pytz                      2021.3             pyhd8ed1ab_0    conda-forge
        pyzmq                     22.3.0           py39h37b5a0c_1    conda-forge
        readline                  8.1                  h46c0cb4_0    conda-forge
        reproc                    14.2.3               h7f98852_0    conda-forge
        reproc-cpp                14.2.3               h9c3ff4c_0    conda-forge
        requests                  2.27.1             pyhd8ed1ab_0    conda-forge
        ruamel.yaml               0.17.19          py39h3811e60_0    conda-forge
        ruamel.yaml.clib          0.2.6            py39h3811e60_0    conda-forge
        ruamel_yaml               0.15.80         py39h3811e60_1006    conda-forge
        send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
        setuptools                60.5.0           py39hf3d152e_0    conda-forge
        six                       1.16.0             pyh6c4a22f_0    conda-forge
        sniffio                   1.2.0            py39hf3d152e_2    conda-forge
        sqlalchemy                1.4.29           py39h3811e60_0    conda-forge
        sqlite                    3.37.0               h9cd32fc_0    conda-forge
        terminado                 0.12.1           py39hf3d152e_1    conda-forge
        testpath                  0.5.0              pyhd8ed1ab_0    conda-forge
        tk                        8.6.11               h27826a3_1    conda-forge
        tornado                   6.1              py39h3811e60_2    conda-forge
        tqdm                      4.62.3             pyhd8ed1ab_0    conda-forge
        traitlets                 5.1.1              pyhd8ed1ab_0    conda-forge
        tzdata                    2021e                he74cb21_0    conda-forge
        urllib3                   1.26.8             pyhd8ed1ab_1    conda-forge
        wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
        webencodings              0.5.1                      py_1    conda-forge
        websocket-client          1.2.3              pyhd8ed1ab_0    conda-forge
        wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
        xz                        5.2.5                h516909a_1    conda-forge
        yaml                      0.2.5                h7f98852_2    conda-forge
        yaml-cpp                  0.6.3                he1b5a44_4    conda-forge
        zeromq                    4.3.4                h9c3ff4c_1    conda-forge
        zipp                      3.7.0              pyhd8ed1ab_0    conda-forge
        zlib                      1.2.11            h36c2ea0_1013    conda-forge
        zstd                      1.5.1                ha95c52a_0    conda-forge

conda env:
        name: base
        channels:
          - conda-forge
        dependencies:
          - _libgcc_mutex=0.1=conda_forge
          - _openmp_mutex=4.5=1_gnu
          - alembic=1.7.5=pyhd8ed1ab_0
          - anyio=3.5.0=py39hf3d152e_0
          - argon2-cffi=21.3.0=pyhd8ed1ab_0
          - argon2-cffi-bindings=21.2.0=py39h3811e60_1
          - async_generator=1.10=py_0
          - attrs=21.4.0=pyhd8ed1ab_0
          - babel=2.9.1=pyh44b312d_0
          - backcall=0.2.0=pyh9f0ad1d_0
          - backports=1.0=py_2
          - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0
          - bleach=4.1.0=pyhd8ed1ab_0
          - blinker=1.4=py_1
          - brotlipy=0.7.0=py39h3811e60_1003
          - bzip2=1.0.8=h7f98852_4
          - c-ares=1.18.1=h7f98852_0
          - ca-certificates=2021.10.8=ha878542_0
          - certifi=2021.10.8=py39hf3d152e_1
          - certipy=0.1.3=py_0
          - cffi=1.15.0=py39h4bc2ebd_0
          - charset-normalizer=2.0.10=pyhd8ed1ab_0
          - colorama=0.4.4=pyh9f0ad1d_0
          - conda=4.11.0=py39hf3d152e_0
          - conda-package-handling=1.7.3=py39h3811e60_1
          - configurable-http-proxy=4.5.0=node17_h7e777a6_2
          - cryptography=36.0.1=py39h95dcef6_0
          - debugpy=1.5.1=py39he80948d_0
          - decorator=5.1.1=pyhd8ed1ab_0
          - defusedxml=0.7.1=pyhd8ed1ab_0
          - entrypoints=0.3=pyhd8ed1ab_1003
          - flit-core=3.6.0=pyhd8ed1ab_0
          - greenlet=1.1.2=py39he80948d_1
          - icu=69.1=h9c3ff4c_0
          - idna=3.1=pyhd3deb0d_0
          - importlib-metadata=4.10.0=py39hf3d152e_0
          - importlib_resources=5.4.0=pyhd8ed1ab_0
          - ipykernel=6.6.1=py39hef51801_0
          - ipython=7.31.0=py39hf3d152e_0
          - ipython_genutils=0.2.0=py_1
          - jedi=0.18.1=py39hf3d152e_0
          - jinja2=3.0.3=pyhd8ed1ab_0
          - json5=0.9.5=pyh9f0ad1d_0
          - jsonschema=4.3.3=pyhd8ed1ab_0
          - jupyter_client=7.1.0=pyhd8ed1ab_0
          - jupyter_core=4.9.1=py39hf3d152e_1
          - jupyter_server=1.13.1=pyhd8ed1ab_0
          - jupyter_telemetry=0.1.0=pyhd8ed1ab_1
          - jupyterhub=2.0.2=hd8ed1ab_0
          - jupyterhub-base=2.0.2=pyhd8ed1ab_0
          - jupyterlab=3.2.6=pyhd8ed1ab_0
          - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
          - jupyterlab_server=2.10.3=pyhd8ed1ab_0
          - krb5=1.19.2=hcc1bbae_3
          - ld_impl_linux-64=2.36.1=hea4e1c9_2
          - libarchive=3.5.2=hccf745f_1
          - libcurl=7.81.0=h2574ce0_0
          - libedit=3.1.20191231=he28a2e2_2
          - libev=4.33=h516909a_1
          - libffi=3.4.2=h7f98852_5
          - libgcc-ng=11.2.0=h1d223b6_11
          - libgomp=11.2.0=h1d223b6_11
          - libiconv=1.16=h516909a_0
          - libmamba=0.19.1=h3985d26_0
          - libmambapy=0.19.1=py39h8bfa403_0
          - libnghttp2=1.43.0=h812cca2_1
          - libsodium=1.0.18=h36c2ea0_1
          - libsolv=0.7.19=h780b84a_5
          - libssh2=1.10.0=ha56f1ee_2
          - libstdcxx-ng=11.2.0=he4da1e4_11
          - libuv=1.42.0=h7f98852_0
          - libxml2=2.9.12=h885dcf4_1
          - libzlib=1.2.11=h36c2ea0_1013
          - lz4-c=1.9.3=h9c3ff4c_1
          - lzo=2.10=h516909a_1000
          - mako=1.1.6=pyhd8ed1ab_0
          - mamba=0.19.1=py39hfa8f2c8_0
          - markupsafe=2.0.1=py39h3811e60_1
          - matplotlib-inline=0.1.3=pyhd8ed1ab_0
          - mistune=0.8.4=py39h3811e60_1005
          - nbclassic=0.3.5=pyhd8ed1ab_0
          - nbclient=0.5.9=pyhd8ed1ab_0
          - nbconvert=6.4.0=py39hf3d152e_0
          - nbformat=5.1.3=pyhd8ed1ab_0
          - ncurses=6.2=h58526e2_4
          - nest-asyncio=1.5.4=pyhd8ed1ab_0
          - nodejs=17.1.0=h8ca31f7_2
          - notebook=6.4.6=pyha770c72_0
          - oauthlib=3.1.1=pyhd8ed1ab_0
          - openssl=1.1.1l=h7f98852_0
          - packaging=21.3=pyhd8ed1ab_0
          - pamela=1.0.0=py_0
          - pandoc=2.16.2=h7f98852_0
          - pandocfilters=1.5.0=pyhd8ed1ab_0
          - parso=0.8.3=pyhd8ed1ab_0
          - pexpect=4.8.0=pyh9f0ad1d_2
          - pickleshare=0.7.5=py_1003
          - pip=21.3.1=pyhd8ed1ab_0
          - prometheus_client=0.12.0=pyhd8ed1ab_0
          - prompt-toolkit=3.0.24=pyha770c72_0
          - psutil=5.9.0=py39h3811e60_0
          - ptyprocess=0.7.0=pyhd3deb0d_0
          - pybind11-abi=4=hd8ed1ab_3
          - pycosat=0.6.3=py39h3811e60_1009
          - pycparser=2.21=pyhd8ed1ab_0
          - pycurl=7.44.1=py39h72e3413_1
          - pygments=2.11.2=pyhd8ed1ab_0
          - pyjwt=2.3.0=pyhd8ed1ab_1
          - pyopenssl=21.0.0=pyhd8ed1ab_0
          - pyparsing=3.0.6=pyhd8ed1ab_0
          - pyrsistent=0.18.0=py39h3811e60_0
          - pysocks=1.7.1=py39hf3d152e_4
          - python=3.9.7=hb7a2778_3_cpython
          - python-dateutil=2.8.2=pyhd8ed1ab_0
          - python-json-logger=2.0.1=pyh9f0ad1d_0
          - python_abi=3.9=2_cp39
          - pytz=2021.3=pyhd8ed1ab_0
          - pyzmq=22.3.0=py39h37b5a0c_1
          - readline=8.1=h46c0cb4_0
          - reproc=14.2.3=h7f98852_0
          - reproc-cpp=14.2.3=h9c3ff4c_0
          - requests=2.27.1=pyhd8ed1ab_0
          - ruamel.yaml=0.17.19=py39h3811e60_0
          - ruamel.yaml.clib=0.2.6=py39h3811e60_0
          - ruamel_yaml=0.15.80=py39h3811e60_1006
          - send2trash=1.8.0=pyhd8ed1ab_0
          - setuptools=60.5.0=py39hf3d152e_0
          - six=1.16.0=pyh6c4a22f_0
          - sniffio=1.2.0=py39hf3d152e_2
          - sqlalchemy=1.4.29=py39h3811e60_0
          - sqlite=3.37.0=h9cd32fc_0
          - terminado=0.12.1=py39hf3d152e_1
          - testpath=0.5.0=pyhd8ed1ab_0
          - tk=8.6.11=h27826a3_1
          - tornado=6.1=py39h3811e60_2
          - tqdm=4.62.3=pyhd8ed1ab_0
          - traitlets=5.1.1=pyhd8ed1ab_0
          - tzdata=2021e=he74cb21_0
          - urllib3=1.26.8=pyhd8ed1ab_1
          - wcwidth=0.2.5=pyh9f0ad1d_2
          - webencodings=0.5.1=py_1
          - websocket-client=1.2.3=pyhd8ed1ab_0
          - wheel=0.37.1=pyhd8ed1ab_0
          - xz=5.2.5=h516909a_1
          - yaml=0.2.5=h7f98852_2
          - yaml-cpp=0.6.3=he1b5a44_4
          - zeromq=4.3.4=h9c3ff4c_1
          - zipp=3.7.0=pyhd8ed1ab_0
          - zlib=1.2.11=h36c2ea0_1013
          - zstd=1.5.1=ha95c52a_0
        prefix: /opt/conda
Command Line Output
[I 2022-02-23 21:33:00.296 ServerApp] jupyterlab | extension was successfully linked.
[W 2022-02-23 21:33:00.303 NotebookApp] 'ip' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config beforeour next release.
[W 2022-02-23 21:33:00.303 NotebookApp] 'port' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[W 2022-02-23 21:33:00.303 NotebookApp] 'port' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[I 2022-02-23 21:33:00.547 ServerApp] nbclassic | extension was successfully linked.
[I 2022-02-23 21:33:00.585 ServerApp] nbclassic | extension was successfully loaded.
[I 2022-02-23 21:33:00.587 LabApp] JupyterLab extension loaded from /opt/conda/lib/python3.9/site-packages/jupyterlab
[I 2022-02-23 21:33:00.587 LabApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 2022-02-23 21:33:00.593 ServerApp] jupyterlab | extension was successfully loaded.
[I 2022-02-23 21:33:00.594 ServerApp] The port 8888 is already in use, trying another port.
[I 2022-02-23 21:33:00.594 ServerApp] The port 8889 is already in use, trying another port.
[I 2022-02-23 21:33:00.595 ServerApp] Serving notebooks from local directory: /home/jovyan
[I 2022-02-23 21:33:00.595 ServerApp] Jupyter Server 1.13.1 is running at:
[I 2022-02-23 21:33:00.595 ServerApp] http://e3a803f59c56:8890/lab?token=c8554df40c6ffdd409fcdd2c124d9c1eb9268c95cc40d039
[I 2022-02-23 21:33:00.595 ServerApp]  or http://127.0.0.1:8890/lab?token=c8554df40c6ffdd409fcdd2c124d9c1eb9268c95cc40d039
[I 2022-02-23 21:33:00.595 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 2022-02-23 21:33:00.600 ServerApp]

    To access the server, open this file in a browser:
        file:///home/jovyan/.local/share/jupyter/runtime/jpserver-159-open.html
    Or copy and paste one of these URLs:
        http://e3a803f59c56:8890/lab?token=c8554df40c6ffdd409fcdd2c124d9c1eb9268c95cc40d039
     or http://127.0.0.1:8890/lab?token=c8554df40c6ffdd409fcdd2c124d9c1eb9268c95cc40d039
welcome[bot] commented 2 years ago

Thank you for opening your first issue in this project! Engagement like this is essential for open source projects! :hugs:
If you haven't done so already, check out Jupyter's Code of Conduct. Also, please try to follow the issue template as it helps other other community members to contribute more effectively. welcome You can meet the other Jovyans by joining our Discourse forum. There is also an intro thread there where you can stop by and say Hi! :wave:
Welcome to the Jupyter community! :tada:

jedbrown commented 2 years ago

I'm having the same issue with nbclassic-0.4.3 for local images. It works for remote images (<img src="https://...png" />) but not for local images (<img src="local.png" />). The local images work if I open the same notebook in Lab.

jedbrown commented 2 years ago

Hmm, I can work around this by prepending /files/ to relative paths, as in <img src="/files/local.png" /> or ![](/files/local.png).

$ jupyter --version
Selected Jupyter core packages...
IPython          : 7.31.1
ipykernel        : 6.4.2
ipywidgets       : 7.7.1
jupyter_client   : 7.3.4
jupyter_core     : 4.11.1
jupyter_server   : 1.18.1
jupyterlab       : 3.4.4
nbclient         : 0.5.13
nbconvert        : 6.5.0
nbformat         : 5.4.0
notebook         : 6.4.12
qtconsole        : 5.2.2
traitlets        : 5.1.1
jedbrown commented 2 years ago

This is quite disruptive when publishing notebooks via jupyter-book because the extra /files/ that I have to manually add to my notebooks to appease nbclassic aren't rewritten by jupyter-book. Does anyone know a workaround?

I'm tied to nbclassic when presenting in class because I use the RISE extension, but I also publish as a website using jupyter-book. Or maybe @choldgraf has a tip to get jupyter-book to do this path substitution as a work-around until this nbclassic issue is resolved?

scmmmh commented 2 years ago

This is likely to be fixed in #148.

jedbrown commented 2 years ago

Thanks! I can confirm local images work as expected after pip install git+https://github.com/jupyter/nbclassic@main.

alexandermichels commented 2 years ago

Working for me as well! Thanks!

echarles commented 1 year ago

Closing based on previous positive reports. Thx all.