PyDev 簡介python
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的開發和調試。編輯器
回頁首函數
安裝 PyDevui
在安裝 PyDev 以前,要保證您已經安裝了 Java 1.4 或更高版本、Eclipse 以及 Python。接下來,開始安裝 PyDev 插件。spa
安裝完後,須要重啓 Eclipse 使安裝生效。.net
驗證是否成功安裝 PyDev開放源代碼
如何才能驗證 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 開發人員實現高效的項目開發提供了很好的條件,該項目也在不斷的發展之中,其功能將會愈來愈強大。