PyDev的使用-高效Py编程
?? 對于VIM使用Python,可以使用Flake8:有人將PyFlakes和PEP 8兩個代碼檢查軟件整合到一起,打造出flake8,該工具可通過插件vim-flake8與vim整合.
? 對于Eclipse的使用,Pydev是個好工具!
(1):pydev主頁鏈接:http://www.pydev.org/
如何寫出高質量的Python程序:http://www.cnblogs.com/onlytiancai/archive/2012/09/11/How_to_write_high-quality_python_program.html
python打包指南:http://www.ibm.com/developerworks/cn/opensource/os-pythonpackaging/
(2):Eclipse安裝Pydev的兩種方法:http://www.codecho.com/two-ways-fo-installing-pedev-in-eclipse/
很久沒有接觸到Python了。以前都是在用2.7版本的,這次索性就安裝3.2的了。一般的小程序其實自帶的IDLE就足夠用了。但是其他的或者喜歡用Eclipse的,pydev成了最佳的選擇。
安裝其實很簡單的,這里介紹下兩種安裝方法。當然你首先需要安裝JDK和Eclipse, 以及Python。
方法一:
1. 直接到http://pydev.org/download.html 下載離線安裝ZIP包。
2. 一種比較隨意的方法就是把壓縮包里面的plugins解壓到Eclipse安裝目錄下對應的目錄,features目錄也是同樣操作。但是你如果不想搞亂原版本的Eclipse,可以選擇如下操作:
- 在Eclipse安裝目錄下新建一個links文件夾。然后再在links文件夾下新建名為eclipse的目錄,最后把pedev.zip的壓縮包內容解壓到eclipse目錄中。
- 在links目錄下,新建一個名為pydev.link的文件,文件的內容為:path=C:\ItDevelop\eclipse\links\eclipse ,(其中path=C:\ItDevelop\eclipse為eclipse的安裝目錄)
3. 之后重啟Eclipse就可以了。如何檢查是否已經正確安裝pydev? 打開Eclipse–>Windows–>preferences,然后在左邊的樹狀結構中就能找到Pydev選項。
方法二:
其實指的是在線安裝。如果你的是Eclipse3.7版本的,那么直接打開Eclipse–>help–>eclipse marketplace,如何搜索下Pydev之后安裝即可。
如果沒有這個功能,可以選擇install new software,然后輸入安裝地址:http://pydev.org/updates
(3):測試PyDev安裝環境:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-pydev/index.html
驗證是否成功安裝 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已經被成功安裝,否則,安裝出了一些問題,需要根據具體問題來做具體的分析。
圖 3. 驗證 PyDev 插件
配置 PyDev
安裝好 PyDev 之后,需要配置 Python/Jython 解釋器,配置過程很簡單。
在 Eclipse 菜單欄中,選擇 Window > Preferences > Pydev > Interpreter - (Python/Jython),在這里配置 Python/Jython 解釋器,下面以 Python 為例介紹如何配置。
首先需要添加已安裝的解釋器。這里,Python 安裝在 C:\Python25 路徑下。單擊 New,選擇 Python 解釋器 python.exe,打開后顯示出一個包含很多復選框的窗口,選擇需要加入系統PYTHONPATH的路徑,單擊 Ok。
圖 4. 配置 PyDev
接下來,檢查一下配置的結果是否正確。
在 System PYTHONPATH里,檢查是否包含配置過程中加入的那些路徑。這里列出了所有的系統所需的庫文件夾。
另外,在 Forced builtin libs 里,列出了 Python 的內置庫。對于 Python 而言,這樣的內置庫大約有50個,而對于 Jython 來說,則有30個左右。
這樣,Python 解釋器就配置好了。
回頁首
PyDev Package Explorer
創建項目
在開展工作之前,需要創建一個新的項目。在 Eclipse 菜單欄中,選擇 File > New > Project > Pydev > Pydev Project,單擊 Next。
圖 5. 創建 Pydev 項目
這時,顯示出 Pydev Project 窗口,輸入項目名稱、選擇工作路徑、選擇 Python 解釋器的版本類型并選中復選框,然后單擊 Next,進入關聯項目的窗口,如果不需要關聯其他項目,則可以直接單擊 Finish,完成項目的創建。
創建 Python 包和模塊
接下來,在剛創建的項目中開始創建 Python 包和模塊。
注意:如果在創建項目的時候沒有選中“Create default src folder and add it to the pythonpath”復選框,則需要通過 File > New > Other > Source Folder 手動創建一個源代碼文件夾。
編輯源程序
對于源程序的一些基本編輯方法,就不做介紹了。下面介紹幾點 Pydev 提供的非常實用的編輯功能。
Python 開發者在創建修改程序的過程中,如果能及時發現編輯過程中出現的語法錯誤,無疑對整個項目開發的質量和進展都是非常重要的。在 Python 透視圖中,Pydev Package Explorer 中列出了項目的源代碼,雙擊其中某一個 Python 文件,如果該文件包含語法錯誤,錯誤會以很醒目的方式展現出來。
圖 6. Pydev 文件語法錯誤提示
如果想把整個項目中所有包含語法錯誤的文件顯示出來,可以從 Python 透視圖自由切換到 Java 透視圖。在 Java Package 里,一個個醒目的小紅叉標記了所有包含語法錯誤的 Python文件。
圖 7. Pydev 項目語法錯誤提示
源代碼編輯助手 (Content Assistents,以下簡稱 CA),顧名思義,即用于幫助開發者編輯源程序,它提供了諸多方便實用的功能,引導開發者進行高效快速的項目開發。
通過快捷鍵 Ctrl+1 可以激活 CA,它支持的功能如下:
PyDev
PyDev Extensions
在安裝 PyDev 時,PyDev 和 PyDev Extensions 包都已安裝,所以 CA 的這幾大功能現在都支持。首先,先介紹如何使用 PyDev 包含的 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 = aself.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 usageexcept:raise下面,再介紹 PyDev Extensions 包含的 CA 功能是如何被運用的。
- PyDev Extension 的 CA 功能
以如下一段代碼為例,xmlreader 未定義,語法分析出錯。
class Test:def method(self):xmlreader將鼠標移至出錯行,啟動快捷鍵 Ctrl+1 激活 CA,選擇標簽欄中的 ”Import xmlreader(xml.sax)”,自動生成一行代碼 from xml.sax import xmlreader,語法錯誤消除。
from xml.sax import xmlreaderclass 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”,忽略對程序體的語法分析。
#@PydevCodeAnalysisIgnoreclass Test:def method(self):xmlreader對特定的 Python 文件,Pydev Extensions 提供的 Quick Outline 能最簡單快捷地獲取該文件的組織結構,并能在該文件中方便地查詢定位所需信息。
在 Pydev 透視圖中,選擇 Source -> Show Quick Outline,或者使用快捷鍵 Ctrl+O 啟動該功能。
Python 文件的類、函數等組織架構便以樹狀形式被形象地展現出來。同時,Filter 提供了查詢定位的功能,可以方便地查詢所需信息并定位到相應的代碼段。
圖 8. Quick Outline
Globals Browser 是 Pydev Extensions 提供的另外一種強大的查詢定位功能。它可以查詢定位整個工程內的一些定義和屬性,包括:
- 類定義
- 方法定義
- 全局變量
- 類以及實例屬性
通過三種方式可以啟動該功能。
- 在 Pydev 透視圖中,從菜單欄中選擇 Pydev -> Globals Browser。
圖 9. 菜單欄啟動 Globals Browser
- 在Pydev 透視圖中,工具欄有如下的一個小圖標,鼠標移至該圖標上方,顯示 ”Pydev: Globals Browser” 標注。點擊該圖標按鈕,可以啟動 Globals Browser 功能。
圖 10. 工具欄啟動 Globals Browser
- 通過快捷鍵 Ctrl + Shift + T,可以快速啟動 Globals Browser 功能。
在 Filter 中輸入所要查詢的定義、變量或者屬性,Globals Browser 可以快速地定位到相應的代碼段。
圖 11. Globals Browser
當某個 python 文件包含多個類時,如何才能簡單直觀地了解各個類之間的依存關系?Hierarchy View 提供了這樣的功能,它能將多個類之間的層次關系以樹狀結構直觀地顯示出來。
以一段 Python 代碼為例,定義了 Super1, Super2, ToAnalyze 和 Sub1 四個類。在 Pydev透視圖中,選擇 Windows -> Show View -> Other,在彈出的 Show View 窗口中,選擇 Pydev -> Hierarchy View。按快捷鍵 F4 激活 Hierarchy View,可以看到樹狀圖中顯示出了類間的層次關系。
圖 12. 在 Hierarchy View 中顯示類的層次關系
Hierarchy View 還支持以下四個功能:
- 在層次圖中,用鼠標單擊某個類,圖下方即顯示出該類的方法。
- 如果雙擊某個類、方法或者屬性,則會調出源程序,進入對該類、方法或者屬性的編輯狀態。
- 在 Hierarchy View 中,按住鼠標右鍵,并相左或向右移動鼠標,層次圖則會相應地縮小或放大。
- 在 Hierarchy View 中,按住鼠標左鍵移動鼠標,層次圖則會被隨意拖動到相應的位置。
回頁首
運行和調試
運行程序
要運行 Python 源程序,有兩種方法可供選擇。下面以一段代碼 example.py 為例介紹這兩種運行方式。
- 在 Pydev Package Explorer 中雙擊 example.py,選擇 Run -> Run As -> Python Run。程序example.py 立即被運行,在控制臺 Console 里顯示出程序的執行結果。
圖 13. Python 程序及運行結果
- 在 Pydev Package Explorer 中,用鼠標右鍵單擊 example.py,在彈出的菜單欄中選擇 Run As -> Python Run。同樣,example.py 被執行,Console 中顯示程序的執行結果。
以上兩種方式是運行源程序的基本方法。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”。
圖 14. Code Coverage Results View
用鼠標左鍵單擊 ”Choose dir!”,在彈出的 Folder Selection 窗口中選擇需要運行的程序所在的包,單擊 Ok。這樣,這個包中所有的源程序便顯示在左欄中。
接下來,仍以 example.py 為例,看看 Run As Python Coverage 功能展現出的結果。選擇Run As -> Python Coverage,控制臺 Console 中顯示出了程序的運行結果。切換到剛才打開的 Code Coverage Results View 視圖,單擊左欄中的 example.py。
圖 15. 在 Code Coverage Results View 中顯示代碼覆蓋率
代碼運行過程中的覆蓋情況很清楚地顯示在右欄中。
雙擊左欄中的 example.py,沒有覆蓋到的代碼便在編輯器中以醒目的錯誤標志被標注出來。
圖 16. 以錯誤標志顯示沒有被覆蓋到的代碼
如果關閉 Code Coverage Results View 視圖,代碼的覆蓋信息并沒有丟失,重新打開該視圖同樣可以顯示出這些信息。只有通過單擊左欄的 “Clear coverage information!” 按鈕,才可以清除程序運行后得到的這些覆蓋信息。
調試程序
調試是程序開發過程中必不可少的,熟練掌握調試技能是開發者進行高效開發的前提和基礎。下面仍以 example.py 為例,介紹如何使用 Pydev 的調試功能。
調試需從添加斷點開始,有三種方式可以設置斷點。
- 雙擊編輯器中標尺欄左邊灰白的空白欄,在某行添加斷點。
圖 17. 雙擊標尺欄左邊灰白的空白欄添加斷點
- 鼠標右鍵單擊標尺欄,在彈出的菜單欄中選擇 ”Add Breakpoint” 添加斷點。
圖 18. 右鍵單擊標尺欄添加斷點
- 將鼠標移至需要添加斷點的代碼行,使用快捷鍵 Ctrl+F10,在彈出的菜單欄中選擇 ”Add Breakpoint” 添加斷點。
添加好斷點后,選擇 Debug As -> Python Run 啟動調試器,彈出一個對話框,詢問是否切換到調試器透視圖,單擊 Yes,即顯示調試模式。
圖 19. 調試器透視圖
程序調試過程中,常用的幾個快捷鍵如下:
- 單步跳入 Step Into: F5
- 單步跳過 Step Over: F6
- 單步返回 Step Return: F7
- 重新開始 Resume: F8
在控制臺 Console 中,顯示出斷點之前代碼的執行結果。如果要查看某個變量的值,以變量 a 為例,可以手動在控制臺中鍵入一行代碼 ”print ‘a is:’, a”,再連續按兩次 Enter 鍵,即顯示出變量的值。
圖 20. 控制臺顯示變量值
在調試模式下,要查看表達式的值,選中后單擊鼠標右鍵,選擇 Watch。彈出 Expression面板,顯示出了相應的變量或表達式的值。
圖 21. Expression 面板中顯示表達式值
如果想要在滿足一定條件下已經添加的斷點才有效,可以設置斷點的屬性。在編輯器的標尺欄中單擊鼠標右鍵,彈出的菜單欄中選擇 Breakpoint Properties。在顯示的窗口中,選中復選框 ”Enable Condition”,輸入需要滿足的條件,單擊 Ok。
圖 22. 設置斷點屬性
這樣,當重新執行程序調試的時候,只有滿足條件的情況下,該斷點才有效。
回頁首
總結
Pydev 結合 Ecplise 實現了如此功能強大且易用的 Python IDE,本文不能一應俱全地介紹出來,對于一些基本的功能沒有做過于詳盡的介紹,主要突出 Pydev 特有的一些功能。Pydev for Eclipse 的出現為 Python 開發人員實現高效的項目開發提供了很好的條件,該項目也在不斷的發展之中,其功能將會越來越強大。
總結
以上是生活随笔為你收集整理的PyDev的使用-高效Py编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习:又一次推动AI梦想(Marr理
- 下一篇: 三维点集拟合:平面拟合、RANSAC、I