2012-04-24 44 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