2012-04-24 20 views
5

Tôi đang theo hướng dẫn này: http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-serverPython lò phản ứng xoắn không xác định biến

nhưng khi tôi viết

reactor.listenTCP(80, factory) 

nhật thực nói với tôi rằng đó là một biến không xác định .. Tôi đã cài đặt xoắn và có thể nhận được tự động hoàn tất cho quá trình nhập nhưng điều này sẽ không hoạt động .. Google đã hiển thị thêm một số vấn đề khác nhưng tôi không thể tìm thấy giải pháp nào cho nó .. Cảm ơn!

EDIT: Các mã hoàn chỉnh:

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

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

Đây không phải là chương trình hoàn chỉnh; vui lòng bao gồm toàn bộ tệp hoặc chúng tôi không thể cho bạn biết bạn đang thiếu gì. – Glyph

+0

Đó là chính xác những gì hướng dẫn nói. nhưng tôi sẽ chỉnh sửa và bao gồm mã hoàn chỉnh –

Trả lời

15

Đây là vấn đề đã biết liên quan đến cách thức Eclipse/PyDev thực hiện phân tích tĩnh.

Nếu bạn nhìn kỹ, đối tượng reactor không thực sự tồn tại trong mô-đun xoắn.internet tại thời điểm nhập. Mô-đun trống.

Khi Eclipse/PyDev cố gắng biên dịch mã byte, phân tích tĩnh không nhìn thấy đối tượng reactor trong mô-đun twisted.internet và đánh dấu nó là biến không xác định, mặc dù nó thực sự có mặt tại thời gian chạy (được đăng ký thông qua một số phép thuật Xoắn Tôi không thể giải thích).

Cách giải quyết tôi sử dụng rất đơn giản, chỉ cần thêm # @ UndefinedVariable để ngăn chặn các lỗi:

reactor.run() #@UndefinedVariable 

Voila. Không còn lỗi IDE nữa.

+5

Bạn cũng có thể thử thêm 'twisted.internet.reactor' vào nội trang cưỡng bức (chưa được thử nghiệm, nhưng nó sẽ hoạt động - xem: http://pydev.org/manual_101_interpreter.html) –

-1

Cố gắng chạy nó bên ngoài của nhật thực toàn phần. Nếu nó hoạt động, đó là một vấn đề nhật thực.

+0

làm thế nào tôi có thể biên dịch nó bên ngoài nhật thực? Tôi đang trên Windows. –

+0

Đó là python, bạn không biên dịch nó. –