gregsexton / ob-ipython

org-babel integration with Jupyter for evaluation of (Python by default) code blocks
739 stars 109 forks source link

Error executing Jupyter command #162

Open spegoraro opened 6 years ago

spegoraro commented 6 years ago

Thanks for the excellent package!

When attempting to execute an org source block the minibuffer shows the following: There was a fatal error trying to process the request. See *ob-ipython-debug*

The debug output contains: Error executing Jupyter command '/home/[user]/.emacs.d/packages/ob-ipython/client.py': [Errno 2] No such file or directory

I ran it with EDebug to get the command line passed to jupyter and tried calling it directly from the command line with the following: /usr/bin/jupyter -- ~/.emacs.d/packages/ob-ipython/client.py --conn-file default --execute <<< "import numpy as np"

But get the exact same error message.

If I incrementally run client.py in a jupyter console (excluding the argparse stuff) it all works as expected so I'm unable to work out where it's going wrong.

I have also tried with jupyter, notebook, core, client and console all at version 5.0.0 in a virtualenv with the same result.

Edit: Executing the org source block correctly starts the kernel and places the config at /run/user/1000/jupyter/emacs-default.json If I call the same command as above and provide the absolute path to the config file it still gives the same error.

Edit 2: It seems that jupyter itself can't run the file which I guess is an oversight by me. If I change python-shell-interpreter to python it works fine however this breaks functionality with other packages like elpy. For now I can just set it buffer-local but it would be good for ob-ipython--get-python to handle this automatically.

Any ideas?

yitang commented 6 years ago

same problem for me.

alf-mindshift commented 5 years ago

The problem seems to be that ob-ipython doesn't honour python-shell-interpreter-args, thus you can't use jupyter as the python-shell-interpreter together with ob-ipython.

Try using ipython instead.