2012-04-24 28 views
5

我下面這個教程: http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-serverPython的扭曲反應器未定義的變量

,但是當我寫的

reactor.listenTCP(80, factory) 

日食告訴我,這是一個不確定的變量.. 我安裝了扭曲,並能得到自動完成進口,但這將不會工作。 谷歌表現出了幾個有這個問題,但我找不到任何解決的辦法.. 謝謝!

編輯: 的完整代碼:

from twisted.internet.protocol import Factory 
from twisted.internet import reactor 

factory = Factory() 
reactor.listenTCP(80, factory) 
reactor.run() 
+0

這不是一個完整的程序;請包括整個文件,否則我們不能告訴你你錯過了什麼。 – Glyph 2012-04-24 22:34:10

+0

這正是教程所說的。但我會編輯幷包含完整的代碼 – 2012-04-24 22:40:41

回答

15

這是關係到Eclipse的方式/ PyDev的一個已知的問題進行靜態分析。

如果你仔細一看,reactor對象實際上並不在進口時twisted.internet模塊中存在。該模塊是空的。

當Eclipse/PyDev嘗試編譯字節碼時,靜態分析並未在twisted.internet模塊中看到reactor對象,並將其標記爲未定義的變量,儘管它實際上在運行時存在(通過一些Twisted magic我無法解釋)。

我用的是簡單的解決辦法,只要加入#@ UndefinedVariable取消錯誤:

reactor.run() #@UndefinedVariable 

瞧。沒有更多的IDE錯誤。

+5

你也可以嘗試添加'twisted.internet.reactor'給被強制的內建函數(沒有測試過,但它應該可以工作 - 參見:http://pydev.org/manual_101_interpreter.html) – 2012-04-25 15:11:19

-1

嘗試Eclipse之外運行。如果它有效,這是一個日食問題。

+0

如何在eclipse之外編譯它?我在Windows上。 – 2012-04-24 22:42:31

+0

這是python,你不會編譯它。 – 2013-08-09 18:38:31