`

Emacs中打造强大的Python IDE

 
阅读更多
原文地址:http://www.cnblogs.com/coderzh/archive/2009/12/26/emacspythonide.html



本文将介绍,在Emacs中,通过各种扩展,打造强大的Python IDE环境,包括Snippet工具,智能提示,自动补全,重构工具,调试以及GAE的调试,等等。以下各工具的安装前提是你对Emacs的配置文件有一定的了解,所有相关的el文件都必须放在load_path能够加载的地方。

1. YASnippet
snippet工具,可自定义一些模板,必不可少的好东西!看了下面这个很酷的演示动画就明白了:
http://yasnippet.googlecode.com/files/yasnippet.avi

安装方法:
(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/.emacs.d/plugins/yasnippet-0.6.1c/snippets")

2. AutoComplete
自动完成工具,会像VS里一样,弹出一个列表框让你去选择。

'

安装方法:

复制代码
(require 'auto-complete)
(require 'auto-complete-config)
(global-auto-complete-mode t)
(setq-default ac-sources '(ac-source-words-in-same-mode-buffers))
(add-hook 'emacs-lisp-mode-hook (lambda () (add-to-list 'ac-sources 'ac-source-symbols)))
(add-hook 'auto-complete-mode-hook (lambda () (add-to-list 'ac-sources 'ac-source-filename)))
(set-face-background 'ac-candidate-face "lightgray")
(set-face-underline 'ac-candidate-face "darkgray")
(set-face-background 'ac-selection-face "steelblue") ;;; 设置比上面截图中更好看的背景颜色
(define-key ac-completing-map "\M-n" 'ac-next)  ;;; 列表中通过按M-n来向下移动
(define-key ac-completing-map "\M-p" 'ac-previous)
(setq ac-auto-start 2)
(setq ac-dwim t)
(define-key ac-mode-map (kbd "M-TAB") 'auto-complete)
复制代码

3. Rope and Ropemacs
非常棒的重构工具,比如rename,move,extract method等等。还有非常好用的goto difinition(跳到定义),show documents(显示文档)等等。安装Ropemacs前,必须先安装rope和pymacs 。

rope的安装方法:

python setup.py install
pymacs的安装方法:

python setup.py install
.emacs中:

(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)
Ropmacs的安装方法:

python setup.py install
.emacs中:

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

4. pycomplete
一个更加强大的智能提示工具,比如,输入time.cl 然后按TAB键,会列出time模块所有cl开头的函数名。在调用函数时,还会在mini buffer中提示函数的参数类型。这个东西需要先安装pymacs。

安装方法:

1. 拷贝 python-mode.el and pycomplete.el 到Emacs的load_path中。

2. 拷贝 pycomplete.py 到PYTHONPATH (比如: c:/python25/Lib/site-packages)

3. .emacs中添加:

(require 'pycomplete)
(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)
(setq interpreter-mode-alist(cons '("python" . python-mode)
                           interpreter-mode-alist))


5. pdb调试
在Emacs中,通过M-x pdb可调出pdb对python代码进行调试。但是发现在Windows系统中,总进入不了调试模式。主要原因有:

1. windows中,找不到pdb.py位置。需自己制定pdb的路径。可以通过下面的方法设置pdb的路径:

复制代码
;; pdb setup, note the python version
(setq pdb-path 'c:/python25/Lib/pdb.py
       gud-pdb-command-name (symbol-name pdb-path))
(defadvice pdb (before gud-query-cmdline activate)
   "Provide a better default command line when called interactively."
   (interactive
    (list (gud-query-cmdline pdb-path
                 (file-name-nondirectory buffer-file-name)))))
复制代码

2. windows中,调用pdb时,未使用python -i 参数。

针对上面两个问题,我的解决办法是,不设置pdb具体路径,M-x pdb 回车后,出现下面命令:

Run pdb (like this): pdb
然后手动修改一下:

Run pdb (like this): python -i -m pdb test.py
这样就搞定了。

6. 如何调试GAE程序
GAE是一个Web应用,需要跨线程进行调试,而pdb本身对线程调试支持不好。使用pdb进行线程调试时,只有在需要调试的地方插入下面代码:

import pdb
pdb.set_trace()
然后直接运行被调试代码,而不是通过python pdb来执行,就可以多线程代码进行调试了。

但是Google App Engine这样的Web应用,使用这个方法还是不能调试,和stdin和stdout有关,最后找到一个很好的解决方法:

def set_trace():
    import pdb, sys
    debugger = pdb.Pdb(stdin=sys.__stdin__,
        stdout=sys.__stdout__)
    debugger.set_trace(sys._getframe().f_back)

在任何需要调试的地方,调用上面的set_trace()函数。

如果你还有更好玩的东西,一定要告诉我!

参考文档:

http://www.emacswiki.org/emacs/PythonMode

http://www.enigmacurry.com/2008/05/09/emacs-as-a-powerful-python-ide/

http://jjinux.blogspot.com/2008/05/python-debugging-google-app-engine-apps.html
分享到:
评论

相关推荐

    Python-EmacsApplicationFramework是一个开发框架开发人员可以开发任何PyQt程序并集成到Emacs中

    `Python-Emacs Application Framework` 就是将这两个强大的工具融合在一起的框架,使得Python开发者能够利用Emacs的强大功能来构建PyQt应用,并无缝地在Emacs中运行和管理这些应用。 首先,让我们深入理解`Python-...

    将Emacs打造成强大的Python代码编辑工具

    以下是如何将Emacs打造为Python代码编辑工具的详细步骤: 1. **基本配置** - Emacs内置了`python-mode`,通过输入`M-x python-mode`即可进入Python编辑模式。当打开`.py`文件时,Emacs通常会自动识别并进入此模式...

    GNU.Emacs完全手册

    《GNU.Emacs完全手册》是一本详尽的资源,专为那些想要深入理解并充分利用GNU Emacs编辑器的用户而编写。...无论是初学者还是经验丰富的用户,都能从中受益匪浅,将Emacs打造成适合自己需求的工作平台。

    emacs-24.3.tar.gz

    6. **集成开发环境**:Emacs可以通过各种模式转变为针对特定语言的IDE,Python开发者可能会发现更完善的调试和测试工具集成。 要安装和使用这个源代码包,你需要遵循以下步骤: 1. **解压**:首先使用`tar -zxvf ...

    emacs4developers:帮助开发人员将Emacs用作开发人员的文档

    Emacs是一款强大的文本编辑器,深受开发者喜爱,尤其在编程社区中有着广泛的用户基础。它不仅是一个编辑器,更是一个可高度自定义的工作环境,通过内置的Lisp方言——Emacs Lisp(Elisp),用户可以对其进行深度定制...

    doomemacs:我的《毁灭战士Emacs》配置

    总的来说,Doom Emacs提供了一个强大而优雅的Emacs体验,其丰富的配置选项使得每个用户都能打造出独一无二的工作环境。通过熟练掌握Emacs Lisp,您可以随心所欲地调整Doom Emacs,使其成为您的理想开发利器。

    .emacs.d:Emacs配置文件

    它不仅是一个编辑器,还是一个集成开发环境(IDE),内置了对各种编程语言的支持,包括但不限于C、Java、Python和Lisp等。Emacs的核心是其内置的Lisp方言——Emacs Lisp (Elisp),用户可以通过编写Elisp代码来定制...

    spacevim140.tar.gz

    **SpaceVim 1.4.0:打造Python IDE的Vim增强工具** SpaceVim 是一个高度可定制的 Vim 模块管理器,旨在简化 Vim 的配置过程,使其更像使用 Emacs 的 spacemacs。在 SpaceVim 1.4.0 版本中,它进一步增强了对 Python...

    开源项目-SpaceVim-SpaceVim.zip

    SpaceVim 是一个高度模块化的 Vim 开源项目,致力于打造一个现代化的 Vim IDE(集成开发环境)。它以 Vim 的强大编辑功能为基础,通过模块化的架构,使得用户可以根据自己的需求定制功能,提升开发效率和用户体验。...

    emacsSetup

    对于编程语言的支持,Emacs有许多强大的模式,如`python-mode`、`java-mode`和`javascript-mode`。这些模式提供了诸如自动缩进、语法高亮、自动完成和错误检查等功能。通过Elisp,你可以集成IDE(集成开发环境)的...

    .dotfiles:Kuhy的识字点文件

    - Org Mode是Emacs中的一个强大的组织和笔记工具,可用于日程管理、任务跟踪、项目规划等。 10. **rofi**: - Rofi是一个窗口切换器和快速选择工具,提供了高效的命令行界面,可以用于启动应用、切换窗口等。 11...

    Light-Workstation:Light Workstation是专为开发人员设计的LightOS版本

    此外,还可能包含一些特定语言的IDE,如Python的PyCharm、Java的IntelliJ IDEA等。 3. **版本控制**:系统内置了版本控制系统,方便开发者对代码进行版本管理和协作。 4. **软件包管理器**:Light Workstation通常...

Global site tag (gtag.js) - Google Analytics