【问题标题】:Running Python inside Emacs on Windows在 Windows 上的 Emacs 中运行 Python
【发布时间】:2012-10-09 09:49:43
【问题描述】:

我刚刚在 Windows 上安装了 Python 2.7 和 IPython。

我习惯于在 Linux 上的 Emacs 中运行 IPython,例如

M-x shell

然后在提示符处输入“ipython”。

这在 Linux 下运行良好,但在 Windows 下它在打印 IPython 横幅文本后挂起,即它看起来像在工作,但你永远不会得到 IPython 提示。

我可以在 Windows 下从标准 cmd 终端毫无问题地加载 IPython(和 Python),只是不能从 Emacs 中加载。

还有其他人经历过或希望解决这个问题吗?

我在尝试启动普通的旧 Python 时也遇到了同样的问题。

【问题讨论】:

  • Godspeed Hiett - emacs 和 Windows。
  • 公平评论 - 我正在将一些软件移植到 Windows 并尝试使我的开发过程尽可能相同(简单?),例如emacs 和 mingw 在来自 samba 共享的 Windows 虚拟机上运行。我已经在 python 中编写了一个系统测试框架,并希望在 Windows 上运行与我在 linux 上相同的黑盒测试,因此这个问题
  • 您不使用run-python 有什么特别的原因吗?它似乎在带有 emacs 24.2 的 Windows 上开箱即用(如果你想使用 ipython 而不是默认值,我想你需要 M-x customize-variable python-command)。
  • @Inaimathi:我在 Windows 上有 emacs 24.3.1。 run-python 返回“正在搜索程序:权限被拒绝,无”。我没有定义python-command

标签: python shell emacs ipython


【解决方案1】:

在 Windows 中它不会那么容易工作,而且非常烦人。首先,确保你已经安装了 pyreadline。

接下来,我让它使用我的系统路径中的一个 bat 文件,该文件包含:

[ipython.bat]
@python.exe -i C:\devel\Python\2.7-bin\Scripts\ipython.py  --pylab %*

接下来获取 python-mode.el 并删除 ipython.el。后者已弃用,python-mode 包含其功能。

相应地更改 ipython.py 文件的路径并保存。现在在您的 Emacs 中,在您的 init.el 文件中执行以下操作。

(custom-set-variables
 '(py-shell-name "ipython.bat"))

或者,要实现最后一步,请执行 C-h v py-shell-name 并对其进行自定义并将其更改为 ipython.bat 或 ipython.bat 的完整路径(如果脚本目录不在您的系统中)小路。保存以备将来使用。

这应该可以让你的 IPython shell 正常工作。如果您想要多个交互式 matplotlib 图形而不挂起您的 IPython 控制台,还有一个警告。我可以解决这个问题的唯一方法是使用 IPython 0.10 而不是当前版本。

【讨论】:

    【解决方案2】:

    我希望我不久前看过这篇文章。我在 Emacs 中运行 python、ipython 的经验如下:

    我尝试了许多选项(在 Windows 7 上使用 python(x,y)-2.7.3.0)

    使用 ipython.el:

    只要您更改 ipython-command,它仍然有效。我不建议这样做,因为您通过更改 ipython-command 会失去 ipython.el 的一些功能

    您可以显示图形,但在您关闭图形之前,提示会被冻结

    裸蟒不工作

    更改 py-shell-name(如上): 当我添加 --pylab 选项时,我的数字总是挂着

    我总是得到一个 IPython 终端

    引入 ipython.bat 包含

    @C:\\Python27\\python.exe -i -u C:\\Python27\\Scripts\\ipython-script.py %*
    

    并更改路径,以便我在 ipython.exe 之前找到 ipython.bat

    IPython 可以工作,但仍然只有一个线程(您必须关闭图形才能返回外壳)

    Python 也可以工作,所有剩余的函数都来自 python-mode.el

    我仍然需要弄清楚打开图形后如何返回外壳(在 emacs 内)。我开始使用 Python 2.6 和旧版本的 IPython

    【讨论】:

      【解决方案3】:

      使用 python -iipython -i 而不是 pythonipython 对我有用(它让我在 Emacs 中得到提示,而不是无限期挂起)。

      来自 python --help :

      -i : 运行脚本后交互检查;甚至强制提示 如果 stdin 似乎不是终端;还有 PYTHONINSPECT=x


      但是,生成的 Python 解释器可能无法完全发挥作用。你有两个选择:

      • 如果您在 conda 环境中使用 python:我建议您切换到正确的 Python 安装。这并不意味着删除 Anaconda,它只意味着从 https://www.python.org/downloads/windows/ 下载 Python 并从 Windows 的 %PATH% 变量中删除 Anaconda 的 Python。如果不这样做,你会遇到很多图片显示问题,conda(conda activate base)激活等问题,我从来没有成功解决过。
      • 如果您使用的是来自 python.org/downloads 的 Python:您就在正确的轨道上!检查是否可以从命令行(Win+R cmd python)访问 Python,如果没有,请将其路径添加到 Windows 路径变量。

      现在您需要使图像显示工作。开箱即用,matplotlib.pyplot 在 Emacs 中滞后。以下是您需要做的:

      首先,检查您是否已下载 ipython 包 (pip install ipython) 以及 matplotlib 和 numpy(如果您使用它们,但谁没有:pip install matplotlibpip install numpy)。

      然后在你的计算机上找到 ipython-script.py 的位置(在文件资源管理器中输入“ipython-script.py”来找到它)并将其作为参数放入变量 python-shell-interpreter-args 中,在“-i”之后。还要检查 python-shell-interpreter 是否正确设置为python。你应该有这样的东西:

      (setq python-shell-interpreter "python")
      (setq python-shell-interpreter-args "-i c:/Users/YOUR-USER-NAME/AppData/Local/Continuum/anaconda3/Scripts/ipython-script.py") 
      

      这样,您可以使用 M-x run-python 直接从 emacs 运行 python shell(或者,从 python 文件中,C-c C-p 然后 C-c C-c)。

      当然,如果您愿意,也可以在 shell 终端上执行相同的操作,使用以下命令: python -i "c:/Users/YOUR-USER-NAME/AppData/Local/Continuum/anaconda3/Scripts/ipython-script.py"

      或者您可以使用相同的命令创建一个 bat 文件。但这不是必需的。

      (使用 Python 3.8 测试)

      【讨论】:

        猜你喜欢
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 2014-01-31
        • 2013-06-13
        • 2013-05-11
        相关资源
        最近更新 更多