在Windows XP上从Emacs使用IPython,无法显示提示和输出

4 投票
2 回答
1095 浏览
提问于 2025-04-16 08:40

我想在Windows XP上把ipython整合到emacs 23里。网上找了很多信息,但都没能解决我的问题。

在我的~/.emacs.d/init.el文件里需要以下内容:

  • python-mode
  • pymacs
  • ipython

我也安装了pyreadline。

我通过一个批处理文件启动ipython(这个文件在我的系统路径里),并加上了-i和-u的参数。

信息文本

c:\Program\emacs-23.2\bin>c:\program\python27\scripts\ipython -i -u

Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.

IPython 0.10.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object'. ?object also works, ?? prints more.

直到我输入第一个命令之前都不会出现。

我没有看到提示符。

输入和“执行”数字会显示红色的Out[n]:和数字。Print什么也不显示。输入a会出现五颜六色的ipython错误文本,最后显示NameError: name 'a' not defined

换句话说,错误信息流似乎正常,标准输出也正常,但print和负责显示提示符的部分似乎找不到正确的输出流。


emacs的*Message*缓冲区显示:

comint-send-string: Output file descriptor of Python<1> is closed

对于python shell中每个未出现的输出。

2 个回答

0

我认为是Python解释器本身需要接收这个-u参数,而不是ipython脚本。也就是说,你的文件C:\Program\Python27\scripts\ipython.bat应该包含类似下面的内容:

@C:\Program\Python27\python.exe -u C:\Program\Python27\scripts\ipython.py %*
0

确保你使用的是 pyreadline 1.6 版本。1.5 版本即使在 Emacs 中运行时,也会使用控制台的方式来写入数据。这会导致很多和你遇到的问题类似的麻烦。

撰写回答