34

我最近开始学习Emacs。我浏览了教程,阅读了一些介绍性文章,到目前为止一切都很好。

现在我想将它用于 Python 开发。据我了解,Emacs 有两种独立的 Python 模式:python-mode.el,它是 Python 项目的一部分;和 python.el,它是 Emacs 22 的一部分。

我阅读了我能找到的所有信息,但其中大部分似乎都已经过时了,我仍然感到困惑。

问题:

  1. 他们有什么区别?
  2. 我应该安装和使用哪种模式?
  3. 是否还有其他对 Python 开发至关重要的 Emacs 附加组件?

相关链接:

4

3 回答 3

20

如果您使用的是 GNU Emacs 21 或之前的版本,或者 XEmacs,请使用 python-mode.el。GNU Emacs 22 python.el 不适用于它们。在 GNU Emacs 22 上,python.el 确实有效,并且与 GNU Emacs 自己的符号解析和完成、ElDoc 等更好地结合。我自己使用 XEmacs,所以我不使用它,而且我听到人们抱怨它没有过去工作得不是很好,但是有一些更新可以解决一些问题(例如,在您链接的 emacswiki 页面上),您希望现在已经将一些更新集成到上游。如果我是 GNU Emacs 类型,我会使用 python.el,直到我找到不这样做的具体理由。

据我所知,python-mode.el 的最大问题是它不太理解三引号字符串。它将它们视为单引号,这意味着三引号字符串中的单引号将抛出语法突出显示:它会认为字符串已经结束。您可能还需要更改您的 auto-mode-alist 以为 .py 文件打开 python-mode;我不记得是否仍然如此,但我的 init.el 多年来一直在设置 auto-mode-alist。

至于其他插件,我认为没有什么是“必要的”。XEmacs 的 func-menu 有时很有用,它为您提供当前文件的小功能/类浏览器菜单。我不记得 GNU Emacs 是否有类似的东西。我有一个用于 reStructuredText 编辑的 rst 模式,因为它在某些项目中使用。绑定到您使用的任何 VC(如果有的话)可能对您有用,但对于其他大多数和易于下载的 .el 文件都有内置支持。

于 2008-10-01T10:47:59.617 回答
8

该站点描述了如何在 Emacs 中完成 Python 代码。 Ropemacs是一种让 Rope 在 emacs 中工作的方法。我没有丰富的经验,但它们值得研究。

于 2008-10-01T17:52:18.380 回答
7

考虑到我有几个打开的缓冲区都被调用的次数__init__.py,我认为uniquify库对于 python 开发至关重要。

Pyflakes 还有助于提高生产力。

于 2010-12-31T12:00:22.113 回答