gregsexton / ob-ipython

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

Ubuntu 16.04 ImportError: No module named 'jupyter_client' #186

Open ouboub opened 6 years ago

ouboub commented 6 years ago

Hi

I am running Ubuntu 16.04, upgraded to pip 9.03 (because pip 10 has a bug), running emacs git master from June.

I installed your package via melpa, then I installed, via pip, the matlab kernel and the jupyter client. Both are in /usr/local/lib/python2.7/dist-packages


  drwxrwsr-x 40 root staff 4.0K Jul  2 11:26 .
  drwxr-sr-x  2 root staff 4.0K Jul  2 11:26 matlab_kernel
  drwxr-sr-x  2 root staff 4.0K Jul  2 11:26 matlab_kernel-0.15.1.dist-info
  drwxr-sr-x  6 root staff 4.0K Jul  2 11:26 metakernel
  drwxr-sr-x  2 root staff 4.0K Jul  2 11:26 metakernel-0.20.14.dist-info
  drwxr-sr-x  2 root staff 4.0K Jul  2 11:26 ipykernel-4.8.2.dist-info
  drwxr-sr-x  8 root staff 4.0K Jul  2 11:26 ipykernel
  -rw-r--r--  1 root staff  552 Jul  2 11:26 ipykernel_launcher.pyc
  drwxr-sr-x  2 root staff 4.0K Jul  2 11:26 ipython-5.7.0.dist-info
  drwxr-sr-x 11 root staff 4.0K Jul  2 11:26 IPython
  drwxr-sr-x  5 root staff 4.0K Jul  2 11:26 jupyter_client
  drwxr-sr-x  2 root staff 4.0K Jul  2 11:26 jupyter_client-5.2.3.dist-info

Now following the advice of John Kitchin, I try to execute the following code


#+BEGIN_SRC emacs-lisp
(add-to-list 'org-src-lang-modes '("matlab" . matlab))

;; set default headers for convenience
(setq org-babel-default-header-args:matlab
      '((:results . "output replace")
    (:session . "matlab")
    (:kernel . "matlab")
    (:exports . "code")
    (:cache .   "no")
    (:noweb . "no")
    (:hlines . "no")
    (:tangle . "no")))

(defalias 'org-babel-execute:matlab 'org-babel-execute:ipython)
(defalias 'org-babel-prep-session:matlab 'org-babel-prep-session:ipython)
(defalias 'org-babel-matlab-initiate-session 'org-babel-ipython-initiate-session)
#+END_SRC

#+RESULTS:
: org-babel-matlab-initiate-session

#+BEGIN_SRC matlab :results output org drawer
x = [1, 2, 3, 4, 5];
fprintf('|%d', x)
#+END_SRC

But I obtain the following error in the debug buffer


Traceback (most recent call last):
  File "/home/oub/.emacs.d/elpa/ob-ipython-20180224.153/client.py", line 1, in <module>
    import jupyter_client as client
ImportError: No module named 'jupyter_client'

I also tried the example provided in https://github.com/gregsexton/ob-ipython but the result was the same.

So how shall I modify that line in the client.py?

Thanks and regards

Uwe Brauer

ouboub commented 6 years ago

Some comments: when I run from the shell ``python client.py Traceback (most recent call last): File "client.py", line 60, in c = create_client(args.conn_file) File "client.py", line 40, in create_client if name.endswith('.json'): AttributeError: 'NoneType' object has no attribute 'endswith'

and when I run python3 client.py Traceback (most recent call last): File "client.py", line 1, in <module> import jupyter_client as client ImportError: No module named 'jupyter_client' which is the message emacs also show. It seems that pip installed jupyter in python2.7 where python3 cannot find it, while python 2.7 cannot deal with jupyter. Is this correct? any workarounds?

ouboub commented 6 years ago

Solved sort of, I had to run sudo -H python3 -m pip install jupyter which installed the jupyter for python3. So I think it is save to close the issue.

AtomicNess123 commented 4 years ago

I am still getting this error. Did not get fixed by doing what this thread recommends. Any ideas?

 File "/Users/ghamelas/.emacs.d/elpa/ob-ipython-20180224.953/client.py", line 1, in <module>
    import jupyter_client as client
ImportError: No module named jupyter_client
anushkmittal commented 4 years ago

bump. were you able to fix this? @Gahamelas

AtomicNess123 commented 4 years ago

I did! Had to do with variables and different version of python. Not sure how I specifically managed to fix it, I changed many things at once, and one day I tried and it worked.

akshaybadola commented 2 years ago

Function ob-ipython--get-python defines the python path. That python environment should have jupyter_client in its environment.