

GitHub - millejoh/emacs-ipython-notebook: Jupyter and IPython 2.x/3.x notebook c...
source link: https://github.com/millejoh/emacs-ipython-notebook
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.rst
EIN -- Emacs IPython Notebook

--- or EIN Is not only for Notebooks.
EIN works with IPython 2.x, 3.x, and Jupyter! Note that remote and password protected logins are working with IPython 3.x, but have not been tested with Jupyter.
Note
The code has been stable enough for my day to day work, but there are no guarantees for the safety for your notebook data. Please make sure that you back-up and back-up often!
Note
The code for testing EIN is horribly broken, but I regularly hand check the code running against IPython's suite of sample notebooks. It's a worse-is-better solution to problem requiring a time-consuming solution.
Org-mode Integration
EIN now integrates with org-mode! The code was heavily inspired by ob-ipython which is another project very much worth checking out. Find it on MELPA.
Screenshots
See more!
Features
The Emacs IPython Notebook (EIN) provides a client for IPython v2.x and 3.x and Jupyter notebooks via an integrated REPL (like SLIME) in Emacs. EIN makes notebook editing very powerful by allowing you to use Emacs features; it also expose IPython features such as code evaluation, object inspection and code completion to the Emacs side. These features can be accessed anywhere in Emacs and improve Python code editing and reading in Emacs.
Highlighted features:
- Copy/paste cells, even to/from different notebooks.
- Console integration: You can easily connect to a kernel via the console application. This enables you to start debugging in the same kernel. It is even possible to connect to a console over ssh.
- An IPython kernel can be "connected" to any buffer. This enables you to evaluate a buffer or buffer region using the same kernel as the notebook. Notebook goodies such as tooltip help, help browser and code completion are available in these buffers.
- Jump to definition (go to the definition by hitting
M-.
over an object).
Other notebook features:
- Inline images
- Auto/manual-completion
- Popup (tooltip) help
- Syntax highlighting in each cell type (Python/Markdown)
- Help browser (opens when executing
function?
) - Traceback viewer
- Integration with org-mode
- Support for debugging via %debug
- Multiple python kernels
- EXPERIMENTAL: Non-python kernels! R runs in EIN, see the screenshot above!
Links:
Quick try
Install from MELPA! Seriously, installing from MELPA is the easiest way to ensure all of ein's dependencies are correctly installed. zeroein.el is from a bygone era and does not quite work the way it used to. If you are determined, and slightly masochistic, you can attempt the following:
git clone git://github.com/millejoh/emacs-ipython-notebook.git cd emacs-ipython-notebook/ lisp/zeroein.el
This will launch a new Emacs instance.
You can use environment variable EMACS
to control Emacs executable
to use.:
EMACS=emacs-snapshot lisp/zeroein.el
The above command requires /bin/sh. If the above command does not work (e.g., you are using MS Windows), try the following command:
emacs -Q -l lisp/zeroein.el
Requirements
EMACS 24.5, 25.2, or 26
IPython 2.0 or higher.
Tornado 4.0.2 or higher.
websocket.el >= 1.7
request.el >= 0.3
request-deferred.el >= 0.2
dash >= 2.13
s >= 1.11
auto-complete.el >= 1.4: You need to configure subpackage
ein-ac
to enable this feature.skewer-mode >= 1.6.2: Skewer mode gives EIN the ability to execute dynamic javascript in the note book.
(optional) Jupyterhub_ 0.8 or higher: EIN supports logging in to Jupyterhub servers using PAM authentication, though this only works with v0.8, which currently is the development version of Jupyterhub.
(optional) markdown-mode
(optional) python-mode: It should work with either python.el or python-mode.el. python.el is required to use
ein:console-open
command.(optional) smartrep.el: This package enables you to omit typing prefix keys (e.g.,
C-c C-n C-n C-n ...
instead ofC-c C-n C-c C-n C-c C-n ...
). You need to configure subpackageein-smartrep
to enable this feature.(optional) jedi.el: Python auto-completion for emacs using jedi. In your emacs initialization file add
(setq ein:completion-backend 'ein:use-ac-jedi-backend)
Also, EIN heavily relies on standard Emacs libraries including EWOC, EIEIO and json.el.
Usage
- Install from MELPA.
For manual install, put Emacs lisp
ein*.el
files and Python fileein.py
in your load path. See online documentation for more information. - Configure the variables
ein:jupyter-default-server-command
andein:jupyter-default-notebook-directory
, then callein:jupyter-server-start
. This should start the jupyter notebook server, log in, then automatically open the notebook list.
-OR-
- Start the Jupyter notebook server.
- (Optional) Newer versions of Jupyter have token authentication enabled by
default so you will need to call
M-x ein:notebooklist-login
and enter the token as the password. - Execute
M-x ein:notebooklist-open
to open notebook list.
Subpackages
Enable auto-complete.el:
(setq ein:use-auto-complete t) ;; Or, to enable "superpack" (a little bit hacky improvements): ;; (setq ein:use-auto-complete-superpack t)
Enable smartrep.el:
(setq ein:use-smartrep t)
Keybindings - Notebook
key binding --- ------- C-c Prefix Command C-x Prefix Command ESC Prefix Command . ein:notebook-complete-dot C-: ein:shared-output-eval-string <C-down> ein:worksheet-goto-next-input <C-up> ein:worksheet-goto-prev-input <M-S-return> ein:worksheet-execute-cell-and-insert-below <M-down> ein:worksheet-move-cell-down <M-up> ein:worksheet-move-cell-up C-x C-s ein:notebook-save-notebook-command C-x C-w ein:notebook-rename-command M-RET ein:worksheet-execute-cell-and-goto-next M-, ein:pytools-jump-back-command M-. ein:pytools-jump-to-source-command M-n ein:worksheet-next-input-history M-p ein:worksheet-previous-input-history C-c C-a ein:worksheet-insert-cell-above C-c C-b ein:worksheet-insert-cell-below C-c C-c ein:worksheet-execute-cell C-c C-e ein:worksheet-toggle-output C-c C-f ein:pytools-request-tooltip-or-help C-c TAB ein:completer-complete C-c C-k ein:worksheet-kill-cell C-c C-l ein:worksheet-clear-output C-c RET ein:worksheet-merge-cell C-c C-n ein:worksheet-goto-next-input C-c C-o ein:console-open C-c C-p ein:worksheet-goto-prev-input C-c C-q ein:notebook-kill-kernel-then-close-command C-c C-r ein:notebook-restart-kernel-command C-c C-s ein:worksheet-split-cell-at-point C-c C-t ein:worksheet-toggle-cell-type C-c C-u ein:worksheet-change-cell-type C-c C-v ein:worksheet-set-output-visibility-all C-c C-w ein:worksheet-copy-cell C-c C-x ein:tb-show C-c C-y ein:worksheet-yank-cell C-c C-z ein:notebook-kernel-interrupt-command C-c ESC Prefix Command C-c ! ein:worksheet-rename-sheet C-c + ein:notebook-worksheet-insert-next C-c - ein:notebook-worksheet-delete C-c 1 ein:notebook-worksheet-open-1th C-c 2 ein:notebook-worksheet-open-2th C-c 3 ein:notebook-worksheet-open-3th C-c 4 ein:notebook-worksheet-open-4th C-c 5 ein:notebook-worksheet-open-5th C-c 6 ein:notebook-worksheet-open-6th C-c 7 ein:notebook-worksheet-open-7th C-c 8 ein:notebook-worksheet-open-8th C-c 9 ein:notebook-worksheet-open-last C-c { ein:notebook-worksheet-open-prev-or-last C-c } ein:notebook-worksheet-open-next-or-first C-c C-S-l ein:worksheet-clear-all-output C-c C-# ein:notebook-close C-c C-' ein:worksheet-turn-on-autoexec C-c C-, ein:pytools-jump-back-command C-c C-. ein:pytools-jump-to-source-command C-c C-/ ein:notebook-scratchsheet-open C-c C-; ein:shared-output-show-code-cell-at-point C-c <down> ein:worksheet-move-cell-down C-c <up> ein:worksheet-move-cell-up C-c M-+ ein:notebook-worksheet-insert-prev C-c M-w ein:worksheet-copy-cell C-c M-{ ein:notebook-worksheet-move-prev C-c M-} ein:notebook-worksheet-move-next
Keybindings - Connect
In Python (or any other) buffer, you can connect to any open notebook
by M-x ein:connect-to-notebook
then choose appropriate notebook.
After connecting to the notebook (and hence its kernel), the following
commands are available.
key binding --- ------- C-c Prefix Command ESC Prefix Command . ein:completer-dot-complete C-: ein:shared-output-eval-string M-, ein:pytools-jump-back-command M-. ein:pytools-jump-to-source-command C-c C-a ein:connect-toggle-autoexec C-c C-c ein:connect-run-or-eval-buffer C-c C-f ein:pytools-request-tooltip-or-help C-c TAB ein:completer-complete C-c C-l ein:connect-reload-buffer C-c C-o ein:console-open C-c C-r ein:connect-eval-region C-c C-x ein:tb-show C-c C-z ein:connect-pop-to-notebook C-c C-, ein:pytools-jump-back-command C-c C-. ein:pytools-jump-to-source-command C-c C-/ ein:notebook-scratchsheet-open
License
Emacs IPython Notebook is licensed under GPL v3. See COPYING for details.
Recommend
-
13
Monday, August 3, 2020 ArcGIS Pro, Jupyter Notebook and Databricks¶ Yet another post in the continuing saga of the usage of Apache Spark...
-
8
Graphing bike path data with IPython Notebook and pandas I gave a talk at Montreal Python on Monday about graphing thi...
-
7
Adicionando kernels do C# e F# no Jupyter Notebook/Lab. (#csharp #fsharp #dotnet #jupyter) Posted on
-
8
Armin's BlogSpark2.0关联Ipython和Jupyter NotebookOctober 05, 2016在 Spark2.0 中对相关接口做了调整 关联 Ipython PYSPARK_DRIVER_PYTHON=ipython ./bin/pyspark...
-
7
R Markdown Notebook 与 Jupyter / IPython Notebook 谢益辉 / 2017-06-19 我现在一般不掺和语言或工具圣战,我没那闲工夫,而且现在也有了足够的定力。放在早年间,比如要是碰到 SAS 与 R 的问题,那就算不吃不睡也要参与瞎叨叨。...
-
6
Jupyter与IPython的关系 IPython是个比默认的Python Shell好用得多的Python交互命令行界面,支持变量自动补全、自动缩进、Bash Shell命令,还内置了许多很有用的功能和函数。大大提高交互式计算和软件开发的生产率。 Jupyter Notebook(前身是I...
-
11
Pandas / IPython Notebook: Include and display an image in a datasframe advertisements I have a pandas Dataframe which also has a column with...
-
3
use ipython notebook in edx dogwood 2016-01-28 edx ...
-
10
使用IPython Notebook来学习编程 2015-05-20 技术 ...
-
5
Remove output from IPython notebook from the command line (dev version 1.0) ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK