设置 Emacs 以使用 python/IPython
Setting up Emacs to work with python/IPython
我使用 R 和 RStudio 编写代码已有一段时间,但最近我开始深入研究 python。可以说,我是 python 的新手,而且是详细编辑 emacs .init 文件 (.emacs
) 的新手。我正在尝试设置和理解 python
和 emacs
之间的相互作用,主要是 IPython,因为我怀疑在不久的将来我会大量使用 IPython。
一开始,我的意图只是能够使用.emacs
编辑一些代码,然后如果需要,复制粘贴到IPython。在那个阶段,我的 .emacs
文件中专门用于 python
的部分是:
;; Enable python
(add-to-list 'load-path "/sw/lib/python-mode-1.0")
(setq auto-mode-alist
(cons '("\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist
(cons '("python" . python-mode)
interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)
我加载了 /sw/lib/python-mode-1.0
,它来自不久前安装 fink
,因为这是我找到 python-mode.el 文件的唯一目录。当时似乎是唯一有效的命令序列(我的直觉是不需要一半(?))。
我了解到您可以将命令从 .emacs
发送到 Python/IPython。我输入: M-x python-mode
,然后输入 M-x py-shell
与 "normal-python" 一起工作,它起作用了。在这里我不得不问第一个问题。
1- 每次运行命令时,我都会收到消息:
`## working on region in file /var/folders/bd/f2194wl90rg38c8jqc12m47m0000gn/T/python-13120iJs.py..`
如何避免收到此消息(每次!)。这个问题不如下面的第二个问题重要。
然后,基于此 post:How to open IPython interpreter in emacs? 我将其输入到我的 .emacs
文件中:
(when (executable-find "ipython")
(setq
python-shell-interpreter "ipython"
python-shell-interpreter-args ""
python-shell-prompt-regexp "In \[[0-9]+\]: "
python-shell-prompt-output-regexp "Out\[[0-9]+\]: "
python-shell-completion-setup-code
"from IPython.core.completerlib import module_completion"
python-shell-completion-module-string-code
"';'.join(module_completion('''%s'''))\n"
python-shell-completion-string-code
"';'.join(get_ipython().Completer.all_completions('''%s'''))\n"))
这实际上允许我通过键入 M-x run-python
来使用 IPython。但是,当我尝试 C-c C-c
时,我收到错误消息:C-c C-c is undefined
。 (与 C-c |
相同,也未定义)
在这个阶段,我的 .emacs
文件中有这两个 "chunks" 的 python-set-up 行,但似乎没有任何东西可以正常工作。我在网上查看并发现了这个: http://ipython.org/ipython-doc/1/config/editors.html ,所以我也尝试输入: (require 'ipython)
但它也没有用。它说 file ipython is not found
。因此,这个 post 中的第二个也是最重要的问题是:
2- 谁能帮我在 Emacs 中彻底设置 IPython? (我不介意是否必须删除到目前为止的所有设置行。我只是希望能够使用 Emacs+IPython 高效地工作)
我正在使用 Mac 10.9.5。 Emacs 版本是 24.4。 Python 2.7.8。如果有任何用处,我使用 anaconda 安装了 python:
>which python
/anaconda/bin/python
>which ipython
/anaconda/bin/ipython
emacs 与 macports,并且是 "aliased":
>which emacs
emacs: aliased to open -a /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
有不同的 python-mode 并行 - 到目前为止没有错,但是最后加载的是键盘映射和菜单。缺少的键来自 python-mode.el - 在这种情况下请参阅菜单 "Python",这应该会指示其他键。
BTW py- TAB 显示来自 python-mode.el 的可用命令,而
python- TAB 同样来自发货 python.el
关于第一个问题,消息传递:在大多数情况下,代码不会发送到解释器-shell,而是存储在一个临时文件中,您将看到其结果。原因是编码问题——否则会出现几个错误。因此,此消息传递了好消息 - 对 debugging/tweaking.
很有用
提交错误报告
我建议您开始使用没有特殊配置的 Emacs:Emacs-24.4 应该开箱即用 Python/IPython。
我为 Emacs 编写了一个插件,允许在 Markdown 或 TeX 缓冲区中与 ipython 交互。在编辑 Python 代码时按下一个键,带有 Python 代码的区域将被发送到 ipython,其结果将作为逐字输出显示在正下方。如果有 plt.show() 调用,它会被转换为 plt.savefig(..) 并且图像引用包含在 Markdown 或 TeX 中。
我使用 R 和 RStudio 编写代码已有一段时间,但最近我开始深入研究 python。可以说,我是 python 的新手,而且是详细编辑 emacs .init 文件 (.emacs
) 的新手。我正在尝试设置和理解 python
和 emacs
之间的相互作用,主要是 IPython,因为我怀疑在不久的将来我会大量使用 IPython。
一开始,我的意图只是能够使用.emacs
编辑一些代码,然后如果需要,复制粘贴到IPython。在那个阶段,我的 .emacs
文件中专门用于 python
的部分是:
;; Enable python
(add-to-list 'load-path "/sw/lib/python-mode-1.0")
(setq auto-mode-alist
(cons '("\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist
(cons '("python" . python-mode)
interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)
我加载了 /sw/lib/python-mode-1.0
,它来自不久前安装 fink
,因为这是我找到 python-mode.el 文件的唯一目录。当时似乎是唯一有效的命令序列(我的直觉是不需要一半(?))。
我了解到您可以将命令从 .emacs
发送到 Python/IPython。我输入: M-x python-mode
,然后输入 M-x py-shell
与 "normal-python" 一起工作,它起作用了。在这里我不得不问第一个问题。
1- 每次运行命令时,我都会收到消息:
`## working on region in file /var/folders/bd/f2194wl90rg38c8jqc12m47m0000gn/T/python-13120iJs.py..`
如何避免收到此消息(每次!)。这个问题不如下面的第二个问题重要。
然后,基于此 post:How to open IPython interpreter in emacs? 我将其输入到我的 .emacs
文件中:
(when (executable-find "ipython")
(setq
python-shell-interpreter "ipython"
python-shell-interpreter-args ""
python-shell-prompt-regexp "In \[[0-9]+\]: "
python-shell-prompt-output-regexp "Out\[[0-9]+\]: "
python-shell-completion-setup-code
"from IPython.core.completerlib import module_completion"
python-shell-completion-module-string-code
"';'.join(module_completion('''%s'''))\n"
python-shell-completion-string-code
"';'.join(get_ipython().Completer.all_completions('''%s'''))\n"))
这实际上允许我通过键入 M-x run-python
来使用 IPython。但是,当我尝试 C-c C-c
时,我收到错误消息:C-c C-c is undefined
。 (与 C-c |
相同,也未定义)
在这个阶段,我的 .emacs
文件中有这两个 "chunks" 的 python-set-up 行,但似乎没有任何东西可以正常工作。我在网上查看并发现了这个: http://ipython.org/ipython-doc/1/config/editors.html ,所以我也尝试输入: (require 'ipython)
但它也没有用。它说 file ipython is not found
。因此,这个 post 中的第二个也是最重要的问题是:
2- 谁能帮我在 Emacs 中彻底设置 IPython? (我不介意是否必须删除到目前为止的所有设置行。我只是希望能够使用 Emacs+IPython 高效地工作)
我正在使用 Mac 10.9.5。 Emacs 版本是 24.4。 Python 2.7.8。如果有任何用处,我使用 anaconda 安装了 python:
>which python
/anaconda/bin/python
>which ipython
/anaconda/bin/ipython
emacs 与 macports,并且是 "aliased":
>which emacs
emacs: aliased to open -a /Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs
有不同的 python-mode 并行 - 到目前为止没有错,但是最后加载的是键盘映射和菜单。缺少的键来自 python-mode.el - 在这种情况下请参阅菜单 "Python",这应该会指示其他键。
BTW py- TAB 显示来自 python-mode.el 的可用命令,而
python- TAB 同样来自发货 python.el
关于第一个问题,消息传递:在大多数情况下,代码不会发送到解释器-shell,而是存储在一个临时文件中,您将看到其结果。原因是编码问题——否则会出现几个错误。因此,此消息传递了好消息 - 对 debugging/tweaking.
很有用 提交错误报告我建议您开始使用没有特殊配置的 Emacs:Emacs-24.4 应该开箱即用 Python/IPython。
我为 Emacs 编写了一个插件,允许在 Markdown 或 TeX 缓冲区中与 ipython 交互。在编辑 Python 代码时按下一个键,带有 Python 代码的区域将被发送到 ipython,其结果将作为逐字输出显示在正下方。如果有 plt.show() 调用,它会被转换为 plt.savefig(..) 并且图像引用包含在 Markdown 或 TeX 中。