转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/index.htmlhtml
PyDev for Eclipse 是一个功能强大且易用的 Eclipse Python IDE 插件。本文将向读者介绍 PyDev 开源项目及其安装配置方法,并在此基础上详细介绍如何利用 PyDev 插件把 Eclipse 变为功能强大且易用的 Python IDE,如何利用其进行 Python 程序的开发和调试。经过本文,读者不只能够了解 PyDev 这个开源项目,更能深刻了解如何应用 PyDev插件把 Eclipse 看成 Python IDE 进行 Python 应用程序的开发和调试。python
————————————————————————————————————————————————————————————————————————————linux
2003年7月16日,以 Fabio Zadrozny 为首的三人开发小组在全球最大的开放源代码软件开发平台和仓库 SourceForge 上注册了一款新的项目,该项目实现了一个功能强大的 Eclipse插件,用户能够彻底利用 Eclipse 来进行 Python 应用程序的开发和调试。这个可以将 Eclipse看成 Python IDE 的项目就是 PyDev。架构
PyDev 插件的出现方便了众多的 Python 开发人员,它提供了一些很好的功能,如:语法错误提示、源代码编辑助手、Quick Outline、Globals Browser、Hierarchy View、运行和调试等等。基于 Eclipse 平台,拥有诸多强大的功能,同时也很是易于使用,PyDev 的这些特性使得它愈来愈受到人们的关注。app
现在,该项目还在不断地推动新的发布版本,目前最新的版本是2008年10月3日发布的1.3.22。本文接下来将介绍 PyDev 的安装配置方法,并在此基础上详细介绍如何使用 PyDev把 Eclipse 看成 Python IDE 进行Python的开发和调试。eclipse
在安装 PyDev 以前,要保证您已经安装了 Java 1.4 或更高版本、Eclipse 以及 Python。接下来,开始安装 PyDev 插件。jsp
安装完后,须要重启 Eclipse 使安装生效。编辑器
如何才能验证 Eclipse Update Manager 是否已经成功安装了所需的 PyDev 插件了呢?函数
选择 Help->About Eclipse SDK->Plug-in Details,将会出现 About Eclipse SDK Plug-ins 窗口,该窗口里列出了全部已经安装了的 Eclipse 插件。检查一下在 Plug-in Id 一栏中是否至少有五个以上分别以 com.python.pydev 和org.python.pydev 开头的插件。若是是,那么 PyDev已经被成功安装,不然,安装出了一些问题,须要根据具体问题来作具体的分析。工具
安装好 PyDev 以后,须要配置 Python/Jython 解释器,配置过程很简单。
在 Eclipse 菜单栏中,选择 Window > Preferences > Pydev > Interpreter - (Python/Jython),在这里配置 Python/Jython 解释器,下面以 Python 为例介绍如何配置。
首先须要添加已安装的解释器。这里,Python 安装在 C:\Python25 路径下。单击 New,选择 Python 解释器 python.exe,打开后显示出一个包含不少复选框的窗口,选择须要加入系统PYTHONPATH的路径,单击 Ok。
接下来,检查一下配置的结果是否正确。
在 System PYTHONPATH里,检查是否包含配置过程当中加入的那些路径。这里列出了全部的系统所需的库文件夹。
另外,在 Forced builtin libs 里,列出了 Python 的内置库。对于 Python 而言,这样的内置库大约有50个,而对于 Jython 来讲,则有30个左右。
这样,Python 解释器就配置好了。
在开展工做以前,须要建立一个新的项目。在 Eclipse 菜单栏中,选择 File > New > Project > Pydev > Pydev Project,单击 Next。
这时,显示出 Pydev Project 窗口,输入项目名称、选择工做路径、选择 Python 解释器的版本类型并选中复选框,而后单击 Next,进入关联项目的窗口,若是不须要关联其余项目,则能够直接单击 Finish,完成项目的建立。
接下来,在刚建立的项目中开始建立 Python 包和模块。
注意:若是在建立项目的时候没有选中“Create default src folder and add it to the pythonpath”复选框,则须要经过 File > New > Other > Source Folder 手动建立一个源代码文件夹。
对于源程序的一些基本编辑方法,就不作介绍了。下面介绍几点 Pydev 提供的很是实用的编辑功能。
Python 开发者在建立修改程序的过程当中,若是能及时发现编辑过程当中出现的语法错误,无疑对整个项目开发的质量和进展都是很是重要的。在 Python 透视图中,Pydev Package Explorer 中列出了项目的源代码,双击其中某一个 Python 文件,若是该文件包含语法错误,错误会以很醒目的方式展示出来。
若是想把整个项目中全部包含语法错误的文件显示出来,能够从 Python 透视图自由切换到 Java 透视图。在 Java Package 里,一个个醒目的小红叉标记了全部包含语法错误的 Python文件。
源代码编辑助手 (Content Assistents,如下简称 CA),顾名思义,即用于帮助开发者编辑源程序,它提供了诸多方便实用的功能,引导开发者进行高效快速的项目开发。
经过快捷键 Ctrl+1 能够激活 CA,它支持的功能以下:
PyDev
PyDev Extensions
在安装 PyDev 时,PyDev 和 PyDev Extensions 包都已安装,因此 CA 的这几大功能如今都支持。首先,先介绍如何使用 PyDev 包含的 CA 功能。
以以下代码为例,将光标移至 import sys 后,启动快捷键 Ctrl+1 激活 CA,”Move import to global scope” 出如今标签中,按 Enter 应用此功能。若是不想应用该功能,能够按 Esc 键取消。
#!/usr/bin/python –u sys.path.append(“./VirtualFS”) import sys
应用该功能后,import sys 被成功移至全局范围内,消除了以前的错误。改变后的代码以下。
#!/usr/bin/python –u import sys sys.path.append(“./VirtualFS”)
Create docstring 功能能够自动为函数添加参数注解。将光标移至以下代码行,启动快捷键Ctrl+1 激活 CA,标签栏中出现 ”Make docstring”。
def __init__(self, dbUser, dbPswd, dbHost):
按 Enter 应用该功能后,自动为该函数添加了参数注解。
def __init__(self, dbUser, dbPswd, dbHost): ''' @param virtualOperator: @param database: @param hostname: @param workDir: '''
CA 还提供一种功能可以将函数返回结果赋给新的内部变量。以函数 callMethod 为例,将光标移至 a.callMethod() 行激活 CA。
def method (self, a): a.callMethod()
选择 ”Assign to field(self, callMethod)” 或者 ”Assign to local(callMethod)”,能够将a.callMethod() 结果赋给新的内部变量 self.callMethod,改变后的代码以下。
def method (self, a): self.callMethod = a.callMethod()
在程序编辑过程当中,若是须要把函数参数赋给变量,可使用 CA 的 Assign parameters to attributes 功能自动完成这样的需求。将光标移至函数 m1 所在行,激活 CA。
class Foo(object): Def m1(self, a, b):
在标签栏中选择 ”Assign parameters to attributes”,自动生成两行代码将参数 a,b 赋给同名变量。
class Foo(object): def m1(self, a, b): self.a = a self.b = b
对可能产生异常的代码,要进行异常捕获,一般使用 try..except 或者 try..finally 语句来捕获异常。选中一段代码 print usage,激活 CA 的 ” Surround code with try..except or try..finally”功能,能够自动对 print usage 进行异常捕获。
import sys def method (self, usage): try: print usage except: raise
下面,再介绍 PyDev Extensions 包含的 CA 功能是如何被运用的。
以以下一段代码为例,xmlreader 未定义,语法分析出错。
class Test: def method(self): xmlreader
将鼠标移至出错行,启动快捷键 Ctrl+1 激活 CA,选择标签栏中的 ”Import xmlreader(xml.sax)”,自动生成一行代码 from xml.sax import xmlreader,语法错误消除。
from xml.sax import xmlreader class Test: def method(self): xmlreader
仍以上述代码为例,因为 xmlreader 没有被定义,包含语法错误,在这一行激活 CA,选择 ”UndefinedVariable”,语法错误被忽略,xmlreader 后自动生成一行注释标明 ”#@UndefinedVariable”。
class Test: def method(self): xmlreader #@UndefinedVariable
语法分析器能够帮助显示包含语法错误的代码,但在程序编辑过程当中,有时候须要刻意取消对程序的语法分析,CA 的 Don't analyze module 提供了这样的功能。
将光标移至程序第一行,激活 CA,选择 ”@PydevCodeAnalysisIgnore”,自动生成一行代码 ”#@ PydevCodeAnalysisIgnore”,忽略对程序体的语法分析。
#@PydevCodeAnalysisIgnore class Test: def method(self): xmlreader
对特定的 Python 文件,Pydev Extensions 提供的 Quick Outline 能最简单快捷地获取该文件的组织结构,并能在该文件中方便地查询定位所需信息。
在 Pydev 透视图中,选择 Source -> Show Quick Outline,或者使用快捷键 Ctrl+O 启动该功能。
Python 文件的类、函数等组织架构便以树状形式被形象地展示出来。同时,Filter 提供了查询定位的功能,能够方便地查询所需信息并定位到相应的代码段。
Globals Browser 是 Pydev Extensions 提供的另一种强大的查询定位功能。它能够查询定位整个工程内的一些定义和属性,包括:
经过三种方式能够启动该功能。
在 Filter 中输入所要查询的定义、变量或者属性,Globals Browser 能够快速地定位到相应的代码段。
当某个 python 文件包含多个类时,如何才能简单直观地了解各个类之间的依存关系?Hierarchy View 提供了这样的功能,它能将多个类之间的层次关系以树状结构直观地显示出来。
以一段 Python 代码为例,定义了 Super1, Super2, ToAnalyze 和 Sub1 四个类。在 Pydev透视图中,选择 Windows -> Show View -> Other,在弹出的 Show View 窗口中,选择 Pydev -> Hierarchy View。按快捷键 F4 激活 Hierarchy View,能够看到树状图中显示出了类间的层次关系。
Hierarchy View 还支持如下四个功能:
要运行 Python 源程序,有两种方法可供选择。下面以一段代码 example.py 为例介绍这两种运行方式。
以上两种方式是运行源程序的基本方法。Pydev 还提供一种特有的源程序运行功能 Run As Python Coverage,该功能不只能显示出程序的运行结果,并且能将程序运行过程当中代码的覆盖率显示出来。
要查看代码的覆盖率,首先须要打开 Code Coverage Results View。在 Pydev 透视图中,选择 Windows -> Show View -> Code Coverage Results View。在弹出视图的左栏中,能够看到三个按钮,”Choose dir!”, “Clear coverage information!” 和 ”Refresh Coverage infomation”。
用鼠标左键单击 ”Choose dir!”,在弹出的 Folder Selection 窗口中选择须要运行的程序所在的包,单击 Ok。这样,这个包中全部的源程序便显示在左栏中。
接下来,仍以 example.py 为例,看看 Run As Python Coverage 功能展示出的结果。选择Run As -> Python Coverage,控制台 Console 中显示出了程序的运行结果。切换到刚才打开的 Code Coverage Results View 视图,单击左栏中的 example.py。
代码运行过程当中的覆盖状况很清楚地显示在右栏中。
双击左栏中的 example.py,没有覆盖到的代码便在编辑器中以醒目的错误标志被标注出来。
若是关闭 Code Coverage Results View 视图,代码的覆盖信息并无丢失,从新打开该视图一样能够显示出这些信息。只有经过单击左栏的 “Clear coverage information!” 按钮,才能够清除程序运行后获得的这些覆盖信息。
调试是程序开发过程当中必不可少的,熟练掌握调试技能是开发者进行高效开发的前提和基础。下面仍以 example.py 为例,介绍如何使用 Pydev 的调试功能。
调试需从添加断点开始,有三种方式能够设置断点。
添加好断点后,选择 Debug As -> Python Run 启动调试器,弹出一个对话框,询问是否切换到调试器透视图,单击 Yes,即显示调试模式。
程序调试过程当中,经常使用的几个快捷键以下:
在控制台 Console 中,显示出断点以前代码的执行结果。若是要查看某个变量的值,以变量 a 为例,能够手动在控制台中键入一行代码 ”print ‘a is:’, a”,再连续按两次 Enter 键,即显示出变量的值。
在调试模式下,要查看表达式的值,选中后单击鼠标右键,选择 Watch。弹出 Expression面板,显示出了相应的变量或表达式的值。
若是想要在知足必定条件下已经添加的断点才有效,能够设置断点的属性。在编辑器的标尺栏中单击鼠标右键,弹出的菜单栏中选择 Breakpoint Properties。在显示的窗口中,选中复选框 ”Enable Condition”,输入须要知足的条件,单击 Ok。
这样,当从新执行程序调试的时候,只有知足条件的状况下,该断点才有效。
Pydev 结合 Ecplise 实现了如此功能强大且易用的 Python IDE,本文不能包罗万象地介绍出来,对于一些基本的功能没有作过于详尽的介绍,主要突出 Pydev 特有的一些功能。Pydev for Eclipse 的出现为 Python 开发人员实现高效的项目开发提供了很好的条件,该项目也在不断的发展之中,其功能将会愈来愈强大。