2011-01-30 63 views
3

這應該是一個相當流行的問題,但Google和stackoverlow搜索都沒有幫助我。
我想在Netbeans 6.9.1中開發Python3程序。但是,當我創建項目,切換的Debug按鈕斷點,然後按我看到下面的輸出:Netbeans中的Python3項目調試6.9.1

[LOG]PythonDebugger : overall Starting 
[LOG]PythonDebugger.taskStarted : I am Starting a new Debugging Session ... 
[LOG]This window is an interactive debugging context aware Python Shell 
[LOG]where you can enter python console commands while debugging 
>>> File "/home/proger/.netbeans/6.9/config/nbPython/debug/nbpythondebug/jpydaemon.py", line 219 
    print self.debuggerFName 
      ^
SyntaxError: invalid syntax 
Debug session Abort =1 
>>> 

和下面的日誌窗口,我看到:

ERROR::Server Socket listen for debuggee has timed out(more than 20 seconds wait) java.net.SocketTimeoutException: Accept timed out 

所以,如果我的理解對不對Netbeans的嘗試用Jython2.something調試器來調試Python3代碼。有沒有辦法連接正確的調試器?

+0

語法錯誤出現 – 2011-01-30 17:27:02

回答

2

我不知道Netbeans是如何工作的,但是從錯誤消息看來,它看起來像Python 3解釋器獲得了Python 2代碼。我冒昧地說,Netbeans通過斷點掛鉤將調試服務器掛鉤到Python,所以當到達斷點時,它啓動一個調試服務器,NetBeans IDE隨後嘗試與之通話。

這個調試服務器(jpydaemon.py)顯然沒有被移植到Python 3,至少在你的版本中沒有。

我懷疑Jython正在執行任何操作。這種情況下的代碼似乎是爲Jython編寫的,因爲它被稱爲jpydaemon.py,並且在任何情況下Jython都不支持Python 3語法,所以如果您嘗試開發Python 3代碼並使用Jython運行它,那麼您可能會非常悲慘地失敗。 :-)

更新:在看jpydaemon.py後,我得出結論,我猜對了。 jpydaemon包含調試器serveice,它通過sys.settrace()掛鉤到調試鉤子中。因此,您遇到的問題非常簡單:jpydaemon.py尚未移植到Python 3,因此您無法使用Netbeans內部調試器來調試Python 3代碼。

3

我在使用NetBeans時遇到了同樣的問題。我通過編輯jpydaemon.py 變化大約219線

print self.debuggerFName 
==> 
print(self.debuggerFName) 

重新啓動NetBeans的代碼解決了這個問題,它的作品。