How to install a nbextension with python and js components as a labextension - jupyter-notebook

I created a nb extension following this link!. The extension works correctly when ran from:
jupyter notebook
When I ran the same extension from
jupyter lab
The extension does not work and gives me an error:
Error displaying widget: model not found
Here is the error on console:
Could not instantiate widget
(anonymous) # manager-base.js:273
09:27:26.891 default.js:127 Error: Module test_pp, semver range 1.2.0 is not registered as a widget module
at WidgetManager.loadClass (manager.js:251)
test_pp is the extension module I am trying to run.
Following are the commands that make the extension work in notebok:
python setup.py build
pip install -e .
jupyter nbextension install --py test_pp
jupyter nbextension enable --py test_pp
jupyter notebook
Folder structure of notebook extension:
test_pp
js
lib
embed.js
extension.js
index.js
labplugin.js
test_pp.js <------ The javascript part of extension
node_modules
package.json
webpack.config.js
test_pp
static
__init__.py
_version.py
test_pp.py <-------- The extension server side python
Looking thru several tutorials and blogs I found some commands that I could run that should make it but, but they did not help:
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension
jupyter labextension install #jupyter-widgets/jupyterlab-manager
cd jupyter_lab_src/test_pp
jupyter labextension install . <----- Fails, not a valid npm package
cd js <----- as that folder has package.json
jupyter labextension install . <---- installs successfully
jupyter lab
Open a notebook from lab, call the same commands that work in jupyter notebook:
from test_pp import test_pp
pp = test_pp.PostProcessor()
pp.initWidget()
data = 1
pp.set_data(data)
pp
Gives the error I described above. Ran a command to see the extensions:
(base) C:\data\OnScale_Jupyter\jupyterlab\test_pp>jupyter labextension list
JupyterLab v1.1.3
Known labextensions:
app dir: c:\users\anils\miniconda3\share\jupyter\lab
#jupyter-widgets/jupyterlab-manager v1.0.2 enabled ok
test_pp v0.1.0 enabled ok* <----- why is there a star
local extensions:
test_pp: C:\data\OnScale_Jupyter\jupyterlab\test_pp\js
I see an error on the conda command console as well:
[W 10:22:31.781 LabApp] Failed to fetch package metadata for 'test_pp': <HTTPError 404: 'Not Found'>
I believe, in essence, I am unsure of how to launch a nbextension as a labextension?
Any help would be appreciated?

Previously, I had the same issue. Here is what I did.
First, I installed the nbextension using the command in conda prompt.
(https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html)
Then I enabled hinterland in nbextension in jupyternotebook. But still, it doesn't work in jupyter lab.
Then I followed instructions mentioned in this link:
https://jupyterlab.readthedocs.io/en/stable/user/extensions.html#id14
installed nodejs using the below command:
conda install -c conda-forge nodejs
Then I rebuild my jupyterlab using the command:
jupyter lab build
Then I could see docstring and other autofill extension working in jupyterlab, as in this image.

Related

Adding jupyter_nbextensions_configurator to Jupyter Notebook

Ultimately, I want a Notebook extension that has spell check. Following this tutorial I tried to install the jupyter_nbextensions_configurator
However, it doesn't seem to have been enabled as I never see the "Nbextensions" tab as promised.
Steps I took:
Installed pip package
pip install jupyter_nbextensions_configurator
Enabled the server extension with the command:
➜ jupyter nbextensions_configurator enable --user # can be skipped for notebook >=5.3
Enabling: jupyter_nbextensions_configurator
- Writing config: /home/hofbr/.jupyter
- Validating...
jupyter_nbextensions_configurator 0.6.1 OK
Enabling notebook nbextension nbextensions_configurator/config_menu/main...
Enabling tree nbextension nbextensions_configurator/tree_tab/main...
Refreshed my .zshrc
Yet, when opening up a fresh notebook (after shutting down all other jupyter environments) I still never see this fabled Nbextensions tab.

nbconvert failed: Pyppeteer is not installed to support Web PDF conversion. Please install `nbconvert[webpdf]` to enable

Getting error as "nbconvert failed: Pyppeteer is not installed to support Web PDF conversion. Please install nbconvert[webpdf] to enable." while trying to download jupyter notebook file (.ipynb) as a PDF file
Execute and install below packages using command prompt:
pip install nbconvert
pip install pyppeteer
Execute the following commands in the command prompt to install nbconvert and puppeteer.
pip install nbconvert
pip install pyppeteer
If you get the error
nbconvert failed: No suitable chromium executable found on the system. Please use '--allow-chromium-download' to allow downloading one.
then try [Following link]
If you are using anaconda and have multiple python installed in your environment try to install it from anaconda interface.
Go to Anaconda navigator -> environments,
Change installer to Not installed
Search nbconvert
Check it and hit apply
Restart your jupyter notebook.
anaconda screen shot
It worked, below is full command :
#To Download the ipynb to PDF into local machine
pip install nbconvert
pip install pyppeteer
jupyter nbconvert --to webpdf --allow-chromium-download untitled.ipynb

Autocomplete failing when using Jupyter Notebook in a virtual environment

The issue:
The autocomplete with the tab key is working with the default kernel but not with the kernel created for my virtual env.
Is there an additional procedure to make it work ?
setup
pip install jupyterlab
mkdir project
cd project
pipenv install ipykernel
pipenv shell
python -m ipykernel install --user --name=`basename $VIRTUAL_ENV`
jupyter notebook
After that procedure I have a good setup:
notebook are launching
python is run from the virtual env as expected
my new kernel is proposed when creating a notebook
Packages installed on the virtual env are imported correctly
Downgrading jedi does the trick : pipenv install jedi==0.17.2

Jupyter nbextensions does not appear

I tried to install jupyter_contrib_nbextensions : http://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
Everything worked fine but when I open a notebook nothing changes. I can't see the new tool bar that I'm supposed to see.
When I reinstall the Extension, the process is the same (I don't have a message tellign me that the files already exists). I don't have an error. So I can't figure out why it doesn't work.
Thanks a lot.
Follow 3 steps: In Terminal
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable varInspector/main
after this you will see "Vaildating: ok"
Now you can open jupyter notebook you will see the require changes
Update Jan 2021
I was seeing this issue using the latest from pip packages.
Turns out it was related to:
https://discourse.jupyter.org/t/the-static-notebook-js-mathjaxutils-js-is-missing/7303
Basically, jupyter-notebook moved a .js file in a recent update causing the extensions tab to no longer appear.
Reverting to an older version works-around the issue:
pip install notebook==6.1.5
Also note that a substantial number of the extensions aren't officially supported by the 6.x version. So you may be better off reverting to 5.x until your desired extensions are 'officially' supported:
pip install notebook==5.7.10
Following are the commands which installs the jupyter nb_extensions
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
The second command might give you below error:
jupyter contrib not found
Above command can be resolved as below:
- open cmd to install manually
cd .\Python\<your-python-version>\Lib\site-packages\jupyter_contrib_nbextensions
python application.py install
- Restart the jupyter notebook server
Note: Also make sure that your packages jupyter , notebook and your jupyter_contrib_nbextensions are installed for same version of python (and same --user if you have installed all your packages with --user flag)
First, follow this SO-post (go to the update) to install the extension.
Then shutdown the notebook server.
Then type $ jupyter nbextension enable varInspector/main.
If it says OK, you can start your notebook and should see the crosshair.
try to run this
jupyter contrib nbextension install --user
then relaunch the Jupyter notebook.
this might solve the problem as it did for me.
Try this out ->
1)Open Anaconda Prompt.
2)Type in -
conda install -c conda-forge jupyter_contrib_nbextensions
(if c is the default directory)
3)Proceed with the installation.
4)Exit the Anacodna prompt.
5)Relaunch Jupyter notebook.
(You will now see nbextensions tab)
Following steps with Anaconda Prompt ->
1)Open Anaconda Prompt.
2)Type in -
conda install -c conda-forge jupyter_contrib_nbextensions
Enter 'y' for installation.
type in jupyter contrib nbextension install --sys-prefix
4)Exit the Anacodna prompt.
5)Relaunch Jupyter notebook. (You will now see nbextensions tab)
Screenshot of my installation
1 quick info -
1. even after enabling nbextensions, from the notebooks tree page,
2. you need to activate it on your Jupyter notebook.
See below.
Running following command one by one !!!
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable spellchecker/main
jupyter nbextension enable codefolding/main
Posting this solution because it took me 20 minutes to figure out why my interface looked so different from all of the screenshots everyone else was posting. I hope it can prevent some other soul from making the same mistake I did:
I was running my Jupyter Notebook with the command jupyter-lab instead of jupyter notebook. I understand there are functional differences between the two, but in my case having spellcheck was much more important than any of the difference the two provided. As soon as I used jupyter notebook instead, it worked perfectly.
UPDATE, FEBRUARY 2023:
I first installed nbextensions using pip. Then I couldn't run the second command jupyter contrib nbextension install --user as the others and got the error Exception: Jupyter command 'jupyter-contrib' not found.
So, I tried installing using conda with this command:
conda install -c conda-forge jupyter_contrib_nbextensions
NOTE 1: I had to run my Anaconda prompt in "Administration Mode" in order to be able to install using conda.
After that I could run the second command:
jupyter contrib nbextension install --user
And it's working now.
NOTE 2: I'm using the latest version of anaconda so I DID NOT need to revert my jupyter version as mentioned here.
Downgrading the notebook version to 5.6.0 worked for me.
pip install notebook==5.6.0
If this doesn't work for you, then return to your original version.
Good luck.
I followed the highest voted answer to install the nbextensions but received an error when I reboot the Jupyter Notebook:
404 GET /nbextensions/nbextensions_configurator/tree_tab/main.js?v=20220513151408
It seemed that what I've installed can not be found by Jupyter Notebook.
After checking the detailed installation log in the terminal, I found Nbextension has been installed into the python2.7 directory:
./Library/Python/2.7/lib/python/site-packages (from jupyter_contrib_nbextensions)
I am currently using Python 3 in Jupyter Notebook so I decided to uninstall what I have and reinstall Nbextension using pip3 instead of pip. Then I reboot Jupyter Notebook and saw the Nbextensions tab (next to the tab Clusters)!
In sum, based on my attempt, I would recommend using pip3 instead of pip to avoid an installation in Python 2 directory.
My installed package version (windows 11):
notebook 6.5.2
jupyter-contrib-nbextensions 0.7.0
jupyter-nbextensions-configurator 0.6.1
Though I can not get the nbextensions menu tab out using the methods mentioned in the previous try outs of this post, I can still use the jupyter nbextension enable <require path> command in the ../python3/scripts folder as following examples which I use frequently:
jupyter nbextension enable varInspector/main
jupyter nbextension enable toc2/main
jupyter nbextension enable execute_time/ExecuteTime
jupyter nbextension enable hide_input/main
jupyter nbextension enable splitcell/splitcell
jupyter nbextension enable code_prettify/code_prettify
Then the variable inspector, table of contents, split cell, hide inputs and code prettify buttons appear in the notebook page. Other extensions can be tried replacing command's <require path> which can be found under the older version's notebook extensions tab that doesn't have the problem.
Change old path notebook/js/mathjaxutils to base/js/mathjaxutils.js to load the dependency correctly.
This solve my problem.
For details see this Github issue about this bug.

jupyter not found after pip install jupyter

After many different ways of trying to install jupyter, it does not seem to install correctly.
May be MacOS related based on how many MacOS system python issues I've been having recently
pip install jupyter --user
Seems to install correctly
But then jupyter is not found
where jupyter
jupyter not found
Not found
Trying another install method found on SO
pip install --upgrade notebook
Seems to install correctly
jupyter is still not found
where pip /usr/local/bin/pip
What can I do to get the command line jupyter notebook command working as in the first step here: https://jupyter.readthedocs.io/en/latest/running.html#running
Short answer: Use python -m notebook
After updating to OS Catalina, I installed a brewed python: brew install python.
It symlinks the Python3, but not the python command, so I added to my $PATH variable the following:
/usr/local/opt/python/libexec/bin
to make the brew python the default python command (don't use system python, and now python2.7 is deprecated). python -m pip install jupyter works, and I can find the jupyter files in ~/Library/Python/3.7/bin/, but the tutorial command of jupyter notebook doesn't work. Instead I just run python -m notebook.
My MacOS has python 2.7, I installed python3 with brew, then the following commands work for me
brew install python3
brew link --overwrite python
pip3 install ipython
python3 -m pip install jupyter
You need to add the local python install directory to your path. Apparently this is not done by default on MacOS.
Try:
export PATH="$HOME/Library/Python/<version number>/bin:$PATH"
and/or add it to your ~/.bashrc.
Try solving this with Conda or Poetry.
Poetry makes it a lot easier to manage Python dependencies (including Jupyter) and build a virtual environment.
Here are the steps to adding Jupyter to a project:
Run poetry add pandas jupyter ipykernel to add the dependency
Run poetry shell to create a shell within the virtual environment
Run jupyter notebook to to fire up a notebook with access to all the virtual environment dependencies
The other suggested solutions are just band-aids. Conda / Poetry can give you a sustainable solution that's easy to maintain and will shield you from constant Python dependency hell.

Resources