【问题标题】:How to open IPython interpreter in emacs?如何在 emacs 中打开 IPython 解释器?
【发布时间】:2013-07-22 22:13:25
【问题描述】:

为了在 Emacs 中进行 Python 开发时使用 IPython,我打开了一个终端,并输入了ipython。这似乎不是正确的做法。

一方面,我的缓冲区将此缓冲区列为*ansi-term*,这很令人困惑,因为我经常使用多个终端,其中一个专用于 Python。我还看到我可以直接用M-x python-shell打开一个python解释器。似乎 IPython 应该有一个类似的选项。

有没有更好的方法在 Emacs 中使用 IPython 解释器?

我正在使用 Emacs 24 和 Prelude。

【问题讨论】:

标签: python emacs ipython


【解决方案1】:

我不知道 Prelude 是什么,但如果你可以安装最新的 Emacs(即包含 Fabian 的 python-mode 的 Emacs),那么你可以使用以下命令让 Python 模式知道你首选的解释器。那么你只需拨打M-x run-python

--

(when (executable-find "ipython")
  (setq python-shell-interpreter "ipython"))

--

【讨论】:

  • 我喜欢这个答案,因为它说明了如何让 Emacs 真正理解会话(提示在哪里,使用 emacs python 模式而不是简单的 cominf)并使用 ipython 自己的完成。
  • 我将此代码添加到我的 .emacs 中,它按预期工作。但是,如果我尝试通过 ein (M-x ein:notebooklist-open) 使用 ipython notebook,它会抛出一个错误,提示错误类型参数:stringp,nil。无论如何要将其与 ein 集成?
  • @WanderingMind 没有回溯我无法告诉你出了什么问题。可能会在 emacs.SE 上提出一个带有回溯详细信息的新问题。
  • 如果你知道条件不是必需的,即你在任何新计算机上做的第一件事就是安装 IPython,你可以使用customize,更具体地说是M-x customize-apropos <RET> python-shell <RET>。当然,您将开始自定义 python-shell-interpreter(到 ipython),但接下来您有超过 25 种其他可能性来详细自定义您的 Emacs-IPython 体验。
【解决方案2】:

UPD 初学者详细说明:

  1. 复制这个:

    (defun ipython ()
        (interactive)
        (term "/usr/bin/ipython"))
    
  2. 尝试首先从终端以emacs -q 启动 Emacs。 -q 表示不加载任何自定义代码。这意味着在这种模式下 您的 emacs 的行为将与我的完全一样。

  3. 您现在应该在欢迎屏幕上。按 q
  4. 您现在应该在*scratch* 缓冲区中。按 C-y 粘贴 您从浏览器复制的代码。
  5. 将光标放在代码的最后一个括号之后。
  6. C-j 评估代码。弹出名称ipython
  7. 现在您可以像执行任何其他命令一样执行此命令,例如M-x ipython.
  8. 如果您希望此更改永久生效,请将代码附加到您的 ~/.emacs

【讨论】:

  • 我对 Emacs 不是特别熟悉。您介意更明确地说明“试试这个”的含义吗?
  • 这个答案还可以,就目前而言,但它并没有比提问者自己的解决方案好多少,只是上手快一点。 Emacs 劣质 python 模式和 IPython 之间的实际集成将是正确的方式。查看 kindahero 的回答
【解决方案3】:

似乎有点晚了,但是也遇到了类似的问题,想将 ipython 作为我的 emacs 24.x 的默认 python 解释器。以下工作就像魔术一样 -

(require 'python)
(setq python-shell-interpreter "ipython")
(setq python-shell-interpreter-args "--pylab")

感谢 http://www.flannaghan.com/2013/08/29/ipython-emacs 拯救了我的一天,也希望是你的。

PS:似乎在您的系统中预装了 anaconda 会有所帮助...

【讨论】:

    【解决方案4】:

    我尝试过 abo-abo 在 emacs 中运行 ipython 的方法。它是在 emacs 中快捷方式 shell 函数的一种非常巧妙的方式。但是,当您在 shell 中时,您确实会失去 emacs 功能(例如,不能 M-x o 离开 shell)

    相反,我个人认为使用 Emacs 内置的 shell 命令 (M-x shell) 要好得多。您可以在 Emacs 内置 shell 中运行 ipython,并且仍然拥有我们都知道和喜爱的所有 Emacs 功能。

    【讨论】:

    • 对我来说,这搞砸了 ipython shell 的格式。至少在 emacs 24 中。
    【解决方案5】:

    编辑:哎呀,下面的项目是一个分支,而不是官方的 Prelude 项目。这里的第二段仍然有效。或者你可以试试 fork。

    它看起来像前奏曲already sets up ipython integration。也许您的副本已过时?

    如果 M-x run-python 没有启动 ipython,请尝试将 (setq python-shell-interpreter "ipython") 添加到您的 init 文件(或只是评估它)并再次运行 M-x run-python。在没有 Prelude 的情况下进行快速测试后,这似乎是所有必要的。

    【讨论】:

      【解决方案6】:

      您可以为此使用我的名为 emacs-ipython 的 Emacs 扩展。

      https://github.com/burakbayramli/emacs-ipython

      在代码块之间的 LaTeX 缓冲区(您可以将其更改为任何缓冲区)中,一键将 python 代码发送到 ipython 内核并在下面的逐字块中显示结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 2023-03-30
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多