Найти - Пользователи
Полная версия: Проблема с twisted
Начало » Network » Проблема с twisted
1
barabansheg
Всем привет! Знаком с питон не очень давно, заинтересовала тема сокетов. Как я понял есть для них такая либа twisted, нашел следующий пример:
from twisted.internet.protocol import Factory, Protocol
from twisted.internet import reactor

class Server(Protocol):
def connectionMade(self):
self.transport.write(self.factory.quote+'\r\n')
def connectionLost(self, reason):
print 'connection lost ...'
def dataReceived(self, data):
print data
self.transport.write(data)

class ServerFactory(Factory):
protocol = Server
def __init__(self, quote=None):
self.quote = quote

reactor.listenTCP(8007, ServerFactory("quote"))
reactor.run()
Пытаюсь запустить- пишет следующее:
Traceback (most recent call last):
File "serv.py", line 1, in <module>
from twisted.internet.protocol import Factory, Protocol
File "/usr/lib/python2.6/dist-packages/twisted/__init__.py", line 18, in <module>
from twisted.python import compat
File "/usr/lib/python2.6/dist-packages/twisted/python/compat.py", line 99, in <module>
except (AttributeError, NameError, socket.error):
AttributeError: 'module' object has no attribute 'error'
ОС: Дебиан 6
Питон: 2.6
Twisted: 10.1.0
Это проблема в модуле? Или пример не правильный?
bw
Откуда “serv” запускается:
$ python -c“import socket; print socket.__file__”
Возможно какой-то не тот socket цепляется.

..bw
barabansheg
“serv” это и есть этот скрипт, запускается из /home/user
Команда python -c“import socket; print socket.__file__”
Выдает вот что:
/usr/lib/python2.6/socket.pyc
Enchantner
barabansheg
я так понимаю, что bw имел в виду запуск данной команды именно из той папки, где у тебя лежит файл serv.py
barabansheg
А) Извиняюсь, туплю, там вот что выдает:
comp@comp:~/Progs/Python$ python -c"import socket; print socket.__file__" 
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "socket.py", line 1, in <module>
from twisted.internet.protocol import Protocol
File "/usr/lib/python2.6/dist-packages/twisted/__init__.py", line 18, in <module>
from twisted.python import compat
File "/usr/lib/python2.6/dist-packages/twisted/python/compat.py", line 99, in <module>
except (AttributeError, NameError, socket.error):
AttributeError: 'module' object has no attribute 'error'
Enchantner
barabansheg
ну вот вам и ответ - у вас в той же папке лежит файл socket.py, и при импорте берется он, а не стандартный модуль питона. Перейменуйте и всё заработает.
barabansheg
Спасибо! Удалил, все работает.
bw
Можно было ещё from __future__ import absolute_import попробовать.
На сколько я помню в Python3 импорт абсолютный по умолчанию, и такой ошибки бы не возникло.

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB