如何在Emacs中使用Python

14 投票
4 回答
8535 浏览
提问于 2025-04-15 16:46

我刚开始接触emacs,想用它来开发Python程序。我现在用的是Ubuntu 9.10,搞得我很沮丧,因为emacs和Python不太好搭配。我用的是GNU Emacs 23.1.50.1(x86_64-pc-linux-gnu,GTK+版本2.18.0)。

这是我做的事情:

emacs自带Python模式,但让我困惑的是有两种模式,一种是python-mode.el,另一种是python.el。我用的是emacs 23,所以我想我用的是python.el。我需要python-mode吗?当我按下M-Tab时,代码补全不工作,反而是窗口管理器在起作用。我试过Esc-Tab,但它显示“没有匹配项”。我该如何启用代码补全呢?

之后我安装了ropemacs。

sudo aptitude install python-ropemacs

然后我在~/.emacs目录下创建了一个.emacs文件,并在里面添加了以下内容:

(require 'pymacs)   
(pymacs-load "ropemacs" "rope-")   
(setq ropemacs-enable-autoimport t)  

接着,当我按M-/(Alt-/)时,它没有反应;而当我从菜单中点击Rope->Code assist时,它打开了一个文件对话框让我选择根项目文件夹。我选择了当前文件夹,里面有一些Python代码。当我再次从菜单尝试Code assist时,它显示“Completion for x: ”,但结果是空的。我该如何让emacs的Python代码补全工作呢?

然后我下载了anything.el、anything-config和anything-match-plugin到~/.emacs.d文件夹。接着我在.emacs文件中添加了以下几行:

(require 'anything-config)   
(require 'anything-match-plugin)   
(global-set-key "\C-ca" 'anything)   
(global-set-key "\C-ce" 'anything-for-files)   

结果你猜怎么着,它还是不工作。我再次尝试“M-x anything”,结果显示没有匹配项。(我猜也许C-ca(先按Control-a再按e)组合可以工作,但它说没有定义)。你能给像我这样的小白解释一下Python的代码补全吗?最好一步一步来。谢谢。

编辑:我通过链接让emacs和Python工作了。感谢所有人的回答。

4 个回答

0

我不太确定你是否需要做什么特别的设置才能让Python开发正常工作。在gNewSense deltah(一个基于Ubuntu 8.04的版本)上,我只做了一件事,就是编辑一个.py文件,文件的第一行是:

#!/usr/bin/python

然后Emacs就能自动识别,给你提供Python模式的选项。我不需要安装除了Emacs以外的其他东西。

不过,这可能对你没什么帮助,因为gNewSense默认已经预装了Emacs。我得在我普通的Ubuntu安装上试试。

2

我觉得你确实需要安装这个包python-mode!因为roemacs的变种主要是用来重构代码的,而pymacs则是让Python可以作为Emacs的扩展语言——这两者都不是你需要的标准支持。

3

我还没有尝试过其他方法,而且在使用rope的时候运气也不太好(因为巨大的源代码树导致我的emacs在保存文件时会卡住)。所以,我发现默认的自动补全功能对我来说已经足够用了。

默认的补全快捷键是 M-/。这个操作会运行一个叫做dabbrev-expand的功能,它会把当前的单词扩展成“最近的、以这个单词为前缀的单词”。虽然这个功能不是完美的:它无法解析类型,也不会搜索导入的内容,但在90%的情况下,它都能正常工作。

(你需要先关闭rope功能。)

撰写回答