2012-04-24 13 views
5

estoy siguiendo este tutorial: http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-serverPython reactor de trenzado variable no definida

pero cuando escribo el eclipse

reactor.listenTCP(80, factory) 

me dice que es una variable no definida .. he instalado retorcido y puedo conseguir autocompletar para la importación, pero esto no funcionará. Google mostró algunas más teniendo este problema, pero no pude encontrar ninguna solución ... ¡Gracias!

EDIT: El código completo:

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

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

Esto no es un programa completo; por favor incluya el archivo completo, o no podemos decirle lo que se está perdiendo. – Glyph

+0

Es exactamente lo que dice el tutorial. pero editaré e incluiré el código completo –

Respuesta

15

Este es un problema conocido relacionado con la forma en que Eclipse/PyDev realiza el análisis estático.

Si observa detenidamente, el objeto reactor no existe realmente en el módulo twisted.internet en el momento de la importación. El módulo está vacío.

Cuando Eclipse/PyDev intenta compilar el bytecode, el análisis estático no ve el objeto reactor en el módulo twisted.internet y lo marca como una variable indefinida, aunque en realidad esté presente en el tiempo de ejecución (registrada a través de algunos Twisted magic No puedo explicarlo).

La solución que uso es sencillo, basta con añadir # @ UndefinedVariable para suprimir el error:

reactor.run() #@UndefinedVariable 

Voila. No más errores IDE.

+5

También podría intentar agregar 'twisted.internet.reactor' a los builtins forzados (no se han probado, pero debería funcionar; consulte: http://pydev.org/manual_101_interpreter.html) –

-1

intenta ejecutar fuera del eclipse. Si funciona, es un problema de eclipse.

+0

¿cómo puedo compilarlo fuera de eclipse? Estoy en Windows. –

+0

Es python, no lo compila. –

Cuestiones relacionadas