I’m new to JupyterLab, recently installed it successfully (I thought), but don’t see Terminal in the Other section of the Launcher, only Text File, Markdown File and Show Contextual Help, not sure how to fix this?
Hi @mattterry13,
Depending on the way you installed JupyterLab, it could be that terminalsAvailable is set to false, which would disable the terminal plugin in JupyterLab:
https://jupyterlab.readthedocs.io/en/stable/user/directories.html?#labconfig-directories
In that case you might be able to see a message in the browser dev tools console that looks like the following:
Disabling terminals plugin because they are not available on the server
Maybe installing JupyterLab in a clean environment could help check whether this is related to this, as a first step?
Thank you for the assistance - you are correct I do see that error message. I installed using pip. When you say installing in a clean environment, what exactly does that mean?
Something like the following:
conda create -n jupyterlab -c conda-forge jupyterlab=3 -y
conda activate jupyterlab
# open JupyterLab
jupyter lab
You might also want to check the order of the configuration folders returned by the jupyter --paths command. There is more info about this in: Jupyter Paths priority order
Just to check whether if there is a page_config.json file in PREFIX/etc/jupyter/labconfig/ (or in ~/.jupyter/labconfig) that might have the terminalsAvailable setting disabled.
Okay it looks like things are fixed now on my personal PC. I wasn’t using Anaconda, but installed that, uninstalled jupyterlab and reinstalled and good to go. On my work PC I’m not sure what my options are. I had to uninstall Anaconda a while back because I couldn’t launch it without it getting hung when connected to the internet and none of the solutions I found helped, so not sure if i’ll be able to do that but am going to try. Thanks again for your assistance, not sure if knowing all this will help for my work PC situation?
Anacaonda Navigator now launches fine on my work comp, so I did the same thing and Terminal is available for me. Thanks a lot for your assistance.
I had a similar problem. I use the packages of my distro and the problem was that the package for jupyter-server-terminals was not installed.
The error on web browser console was:
Disabling terminals plugin because they are not available on the server
I am facing same issue i am getting same 2 logs
- Broswer console:
Disabling terminals plugin because they are not available on the server
I try to set below at startup, --ServerApp.terminals_enabled=True, still facing same.
- In container log i see below
[W 2023-08-29 10:52:19.021 ServerApp] The module ‘jupyter_server_terminals’ could not be found. Are you sure the extension is installed?
[I 2023-08-29 10:52:19.026 ServerApp] jupyterlab | extension was successfully linked.
Request community to help here
Hi everyone, I was having this same issue and none of these solutions were helping for my use case. I did find a solution that works.
I was building containers with Linux, but I suspect this same issue will happen regardless of whether you are building containers or not.
I was installing Python + Pip fresh, and then installing my distro package for Jupyter Lab. I then made a virtual environment, because I kept getting errors about the packages being managed by my distro when installing with pip. After installing other packages (with the venv and pip) and finishing the build, I would launch the container (which had a run script to launch jupyter lab). I was getting the same error as jtp pointed out above when checking the web console:
Disabling terminals plugin because they are not available on the server
I discovered that I was not switching to the venv before launching Jupyter; for good measure I also started using pip to install Jupyter Lab, rather than my distro package. So in my case, the solution was:
- Install Jupyter Lab using pip (and of course, with the right venv activated)
- Launching Jupyter Lab after sourcing the correct venv
I didn’t want to use Conda, so I never tried that solution above- but given the solution I found, it probably would’ve worked too.
I had a similar issue because of an already existing jupyter_server_terminals when doing a pip installation. I asked Claude to make a full report of what we tried.
TL;DR: If ~/.local/etc/jupyter/jupyter_server_config.d/jupyter_server_terminals.json is missing, run pip install --force-reinstall jupyter_server_terminals and restart JupyterLab.
Environment
-
OS: Linux
-
JupyterLab: 4.5.6 (installed via pip)
-
jupyter_server: 2.17.0
-
jupyter_server_terminals: 0.5.4
-
Python: 3.9
Symptom
After a fresh pip install jupyterlab (or upgrading JupyterLab), the Terminal option is missing from the Launcher. The other launcher items (notebooks, text file, etc.) are present.
There are no relevant error messages in the JupyterLab log, even with --debug. The browser console does not show the usual “Disabling terminals plugin because they are not available on the server” message either.
Running jupyter server extension list shows no extensions at all — not even JupyterLab itself — even though jupyter --paths correctly lists ~/.local/etc/jupyter as a config directory. This appears to be a separate bug in jupyter server extension list silently dropping config directories during validation.
Root Cause
pip uninstall jupyterlab only removes the explicitly named package — it does not remove dependencies like jupyter_server_terminals. So after running:
pip uninstall jupyterlab
pip install jupyterlab
jupyter_server_terminals is still present from the previous install. When pip installs JupyterLab’s dependencies, it sees jupyter_server_terminals as already satisfied and skips it entirely — including skipping placement of its JSON config file in ~/.local/etc/jupyter/jupyter_server_config.d/.
JupyterLab’s own config file (jupyterlab.json) is placed correctly because JupyterLab itself was fully uninstalled and reinstalled. But jupyter_server_terminals.json is never placed. Without it, the server never loads the terminals extension and the Terminal launcher entry never appears.
This is a bug in jupyter_server_terminals: its config file is not idempotently placed when the package is already present, for example after a dependent package (JupyterLab) is reinstalled. A correct fix would be to use a post-install mechanism that ensures the config file is always in place, regardless of whether pip considers the package version already satisfied.
You can confirm this is your issue by checking:
ls ~/.local/etc/jupyter/jupyter_server_config.d/
If you only see jupyterlab.json and not jupyter_server_terminals.json, this is your problem.
Fix
Force-reinstall jupyter_server_terminals to make pip place the missing config file:
pip install --force-reinstall jupyter_server_terminals
Note: pip install jupyter_server_terminals and pip install --upgrade jupyter_server_terminals will both report “already satisfied” and do nothing, since the package files are already present. You must use --force-reinstall.
Then restart JupyterLab. The Terminal option will reappear in the Launcher.
Alternatively, you can create the config file manually:
cat > ~/.local/etc/jupyter/jupyter_server_config.d/jupyter_server_terminals.json << 'EOF'
{
"ServerApp": {
"jpserver_extensions": {
"jupyter_server_terminals": true
}
}
}
EOF
What does NOT help
-
pip install jupyter_server_terminals— says “already satisfied” and does nothing -
pip install --upgrade jupyter_server_terminals— same, since the version is already current -
--ServerApp.terminals_enabled=Truelaunch flag — has no effect -
Installing
terminadoseparately — already present -
Checking the
SHELLenvironment variable — fine
Related bugs
-
jupyter server extension listsilently drops~/.local/etc/jupyterfrom its output when any extension fails validation, making diagnosis very difficult. The extensions are read correctly at runtime by JupyterLab itself, but the CLI tool is blind to them. This should probably be fixed to show an explicit error rather than silently omitting the entire config directory. See: server extension list hides invalid extensions instead of showing errors · Issue #500 · jupyter-server/jupyter_server · GitHub -
pip uninstall jupyterlabdoes not removejupyter_server_terminals, so on reinstall pip skips it as already satisfied and never places its config file. Thejupyter_server_terminalspackage should ensure its config JSON is placed idempotently — e.g. via a post-install hook or by JupyterLab verifying required config files are present after install. See: GitHub - jupyter-server/jupyter_server_terminals: A Jupyter Server Extension Providing Support for Terminals · GitHub
