Jupyter in VSCode Failing to Start Kernel - macos

I've been using Jupyter within VSCode with no problems for a couple weeks, but since this morning it has been unable to start a kernel to run my code.
Typically, I can just open any .ipynb file in VSCode and immediately run it with no problems. That's giving me the message:
Failed to start the Kernel.
Jupyter server crashed. Unable to connect.
Error code from Jupyter: 1
usage: jupyter.py [-h] [--version] [--config-dir] [--data-dir] [--runtime-dir]
[--paths] [--json] [--debug]
[subcommand]
Jupyter: Interactive Computing
positional arguments:
subcommand the subcommand to launch
options:
-h, --help show this help message and exit
--version show the versions of core jupyter packages and exit
--config-dir show Jupyter config dir
--data-dir show Jupyter data dir
--runtime-dir show Jupyter runtime dir
--paths show all Jupyter paths. Add --json for machine-readable
format.
--json output paths as machine-readable json
--debug output debug information about paths
Available subcommands: dejavu lab labextension labhub nbconvert
Jupyter command `jupyter-notebook` not found.
View Jupyter log for further details.
I can, however, open a local host in a browser using:
python3 -m notebook
in my terminal.
Any help is greatly appreciated.

I had the same problem. Seems there was an issue in a previous release of the Jupyter extension for VScode (see : [1])
I resolved as suggested in [1] :
uninstall jupyter from your global environment
set up a virtual environment
install jupyter in the new virtual env
select the virtual env as kernel used in VScode
run some cells (should work)
In case you want to use jupyter in your global environment :
remove the virtual environment
reinstall jupyter in your global env
select the correct global env interpreter in VScode
[1] https://github.com/microsoft/vscode-jupyter/issues/12714

Related

Does jupyter lab work within its own conda environment it was installed in?

I have multiple conda environments on my PC created with Anaconda and I have installed jupyterlab in two of them. I used one environment for R programming and the other for Tensorflow with Python. I have noticed that whenever I open jupyter lab in either of the environments, it always starts off where I left it. That is, the last open notebooks are opened on start. Of course, this doesn't bother me too much, but it makes me think each jupyter lab installation isn't contained within its own environment.
For example, I have two environments. Say they're called env_R and env_Python_TF. I have installed jupyter lab in both environments.
I open Anaconda Powershell prompt and launch each environment using the following commands:
(base) PS $ conda activate env_R
(env_R)PS $ jupyter lab
Say I work on jupyter lab and once I'm done, I close the browser windows and then shut down the server using CTRL+C in Anaconda Powershell prompt. Now if I open up my second environment using:
(base) PS $ conda activate env_Python_TF
(env_Python_TF)PS $ jupyter lab
Now I see the same notebooks I used with env_R opened up when jupyter lab opens in my browser.
Aren't each jupyter lab installation contained within its own conda environments? If not, have I possibly made a mistake in my configuration?
it should be within its own conda environment but Default root folder /location will remain same for jupyter notebook. You will need to change it using config file.
Here is link

Can't open Jupyter notebook from command prompt

I have always opened the jupyter notebooks from the Anaconda prompt. The problem is that whenever I try to open the Jupyter notebook from the command prompt, the following error is displayed:
Picture of the Error shown on my command prompt window
ImportError: DLL load failed: The specified module could not be found.
What am I doing wrong ? What should I do?
Opening Jupyter Notebook from command prompt is useful, especially when you would like to open the Jupyter Notebook from a specific folder.
The following 2 steps might help you to resolve this issue.
open command prompt
activate base
The prompt might change to begin with "(base)", which is expected. Then type,
Jupyter-notebook
If Jupyter notebook opens up now, this means Jupyter is correctly installed within your conda environment. In OS like Windows 10, it was an expected behavior not to recognize Python outside of Conda environment, which extends to Jupyter Notebook as well.
If the 1st step works properly, then add the below paths to your
environment variable. If you would not like to add the path to your
system environment variable, you can choose to update in your
account environment variable.
In windows 10 >> search "environments" and "Edit environment
variables for your account"
Select "PATH" and edit.
Add below paths
C:\Users\\Anaconda3;
C:\Users\\Anaconda3\Scripts;
C:\Users\\Anaconda3\Lib;
C:\Users\\Anaconda3\Library\bin;
C:\Users\\Anaconda3\Library\mingw-w64\bin;
Now you should be able to open Jupyter Notebook directly from command prompt.

How to change Jupyter Notebook (Windows) shell to bash

I'm currently running Jupyter Notebook (Windows 7) within a Conda environment using Python 3.6.4 and my current version of Jupyter Notebook is 5.6.0. I came across the following article: Using Git Bash in Jupyter Notebook on Windows , that explains how to change the default shell within Jupyter Notebook to Bash by changing the config "C.NotebookApp.terminado_settings = {'shell_command': ['C:\Program Files\Git\bin\bash.exe']}. I've tried multiple different options for the path to bash, including just the name 'bash', with no success.
Python and Jupyter version:
Jupyter Notebook: Not changed, still using Powershell
I've read up on the Jupyter Notebook: Read the Docs , and made the changes to the jupyter_notebook_config.py found under C:\Users\UserName\.jupyter directory, without any success.
An alternative solution to your problem is to use the Windows Subsystem for Linux (WSL).
I am under Windows 10, conda 4.5.11 and Jupyter lab 0.35.3. I have also activated the Windows subsystem for Linux (WSL).
Using !wsl you can call the WSL or with %%bash for cell magics.
Inside Jupyter Lab I have:
is the %%bash cell magic referring to the WSL? According to my tests yes, I can access the same programs and I am taken to the WSL when I run bash.exe from the Conda prompt. There is an integration of the PowerShell prompt to WSL (https://learn.microsoft.com/en-us/windows/wsl/interop). The same seems to work with the conda prompt.
Here are three options:
If one opens Jupyter notebook via GitBash with jupyter notebook then %%bash magics should work
If one wishes to always be able to run bash within a Jupyter Notebook opened via Anaconda Prompt (similarly using jupyter notebook):
Edit the Jupyter Notebook config file:
Location can be found via Anaconda Prompt with jupyter --config-dir
Open the jupyter_notebook_config.py file in this directory using notepad or an IDE
Modify and save with the line of code: c.NotebookApp.terminado_settings = {} pointed instead to your bash executible (e.g.): c.NotebookApp.terminado_settings = { 'shell_command': ['C:\Program Files\Git\bin\bash.exe'] }
Edit your system environment variables:
Windows Search (with admin rights) > "Edit the System Environment Variables" > Environment Variables > Highlight "path" > Edit > Add a new line with C:\Program Files\Git\bin > OK out of all windows
Set an environment variable in Jupyter Notebook

Jupyter notebook kernel not seen by 'conda info -e'

Using:
/opt/anaconda3/bin/jupyter kernelspec list
I get:
python3 /opt/anaconda3/lib/python3.5/site-packages/ipykernel/resources
ir /opt/anaconda3/share/jupyter/kernels/ir
apache_toree_pyspark /usr/local/share/jupyter/kernels/apache_toree_pyspark
apache_toree_sql /usr/local/share/jupyter/kernels/apache_toree_sql
sparktest_scala /usr/local/share/jupyter/kernels/sparktest_scala
But when using:
conda info -e
I get:
base * /opt/anaconda3
py35-Spark /opt/anaconda3/envs/py35-Spark
In my notebook I only see the Kernels (python3, ir, Aapache...) I do not see the new environments I set up. Why is this?
I ended up doing:
source activate py35-Spark
Then ran:
jupyter notebook
This will run a new Jupiter notebook instance, so when I go to the browser and open the notebook it uses my conda environment that I set up. I believe there is a way to use ipython kernel instead.

How to start an ipython shell(not notebook) within a conda or virtualenv

Is it possible to start an ipython shell(in terminal) within a conda or virtualenv ?
The ipython shell should belongs to the respective environment.
I know a way to start jupyter notebook within the env, by creating a kernelspecs for the virtual env and then choosing the env kernel within the jupyter notebook.
here is the link : http://help.pythonanywhere.com/pages/IPythonNotebookVirtualenvs
But this only setup the jupyter notebook for the current environment. Is there a to do the same for ipython shell
The answer given by Grisha Levit almost solved the problem. So, i am writing the complete details of the answer, how to setup a ipython console within a specific environment.
1.) Activate the virtual env:
source activate <environment-name>
2.) From within the virtual env:
jupyter kernelspec install-self --user
3.) This will create a kernelspec for your virtual env and tell you where it is:
Installed kernelspec pythonX in home/username/.local/share/jupyter/kernels/pythonX
Where pythonX is the version of the python in the virtualenv.
4.) Copy the new kernelspec somewhere useful. Choose a kernel_name for your new kernel that is not python2 or python3 or one you've used before and then:
mkdir -p ~/.ipython/kernels
mv ~/.local/share/jupyter/kernels/pythonX ~/.ipython/kernels/<kernel_name>
5.) If you want to change the name of the kernel that IPython shows you, you need to edit ~/.ipython/kernels//kernel.json and change the JSON key called display_name to be a name that you like.
6.) Running jupter/ipython console within the virtualenv.
jupyter console --kernel <kernel-name>
7.) This will start the jupyter console/shell for the current virtualenv and you can also see kernel in the IPython notebook menu: Kernel -> Change kernel and be able so switch to it (you may need to refresh the page before it appears in the list). IPython will remember which kernel to use for that notebook from then on.
I know a way to start jupyter notebook within the env, by creating a kernelspecs for the virtual env and then choosing the env kernel within the jupyter notebook.
You just need to do the same thing, but using console instead of notebook.
For example:
ipython console --kernel python2

Resources