2009-02-25 5 views
3

У меня есть приложение в Python 2.5, которое слушает очередь beanstalk. Он отлично работает на всех проверенных мной машинах, за исключением моего недавно приобретенного MacBook Pro.Проблемы с выбранным модулем на Python 2.5

На этом компьютере, когда я пытаюсь запустить его, я получаю эту ошибку:

Traceback (most recent call last): 
    File "jobs.py", line 181, in <module> 
    Jobs().start() 
    File "jobs.py", line 154, in start 
    self.jobQueue = Queue() 
    File "src/utils/queue.py", line 16, in __init__ 
    self.connection = serverconn.ServerConn(self.server, self.port) 
    File "src/beanstalk/serverconn.py", line 25, in __init__ 
    self.poller = select.poll() 
AttributeError: 'module' object has no attribute 'poll' 

serverconn.py имеет следующий импорт:

import socket, select 

И когда я пытаюсь запустить его из командной строки, он также не работает:

Python 2.5.1 (r251:54863, Jul 23 2008, 11:00:16) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import select 
>>> select.poll() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'poll' 

У вас есть идеи, что может случиться?

PS: Несмотря на то, что я уверен, что это не проблема источника, если вам нужен какой-то фон на источнике, который не работает, он доступен в [http://pastie.org/399342](this pastie).

Обновлено:, так как первый ответ, который я получил раздумывает, стоит ли это select.poll() или не поддерживается на Mac OS, но у меня есть ИМАК тоже и с той же самой версии ОС и она отлично работает:

2009-02-25 00:27:10,067 - Queue - DEBUG - Connecting to BeansTalk daemon @ localhost:11300 
+0

Вы не могли бы добавить тег 'osx'? У меня нет enuf rep делать себя – popcnt

ответ

0

использовать версию pythonMacPorts на вашем MBP.

Mac OS X поддерживает это. Apple АО Leopard python 2.5.1 нет.

вы хотите загрузить и установить MacPorts, если вы еще этого не сделали. FYI, я нахожу Porticus отличным графическим интерфейсом вокруг MacPorts.

здесь является сравнение складе Leopard питон против последней MacPorts python2.5 ...


Leopard питона от компании Apple (питон 2.5.1) - select.poll() сломаны

$ /usr/bin/python 
Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import socket, select 
>>> select.poll() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'poll' 
>>> 

Macports (python 2.5.4) - select.poll() работает!

$ /opt/local/bin/python2.5 
Python 2.5.4 (r254:67916, Feb 3 2009, 21:40:31) 
[GCC 4.0.1 (Apple Inc. build 5488)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import socket, select 
>>> select.poll() 
<select.poll object at 0x11128> 
>>> 
+0

Я не уверен, как это работает. доступно в Mac? – rampr

0

select.poll()

(Не поддерживается всеми операционными системами.) Возвращает объект опроса, который поддерживает регистрацию и Дерегистрация дескрипторов файлов, а затем опрос их для событий ввода/вывода; см. раздел «Объекты опроса» ниже для методов, поддерживаемых объектами опроса.

Я предполагаю, что он не поддерживается на macOS.

+0

monkut, спасибо за ответ, но не тот случай - у меня есть iMac, где он работает отлично ... :(Это меня заинтриговало. – kolrie

+0

Хорошо, похоже, JMP - это то, что вам нужно в правильном направлении. Удачи, решив вашу проблему! – monkut

+0

Спасибо monkut, я думаю, что я установил 2.5 на другой Mac с помощью MacPorts ... Go figure ... – kolrie

6

Согласно this macports ticket реализации компании Apple опроса() прямо вверх сломана.Apple работала над этим, отключив poll() в Python, а macports теперь отключает опрос и в своих Python. Я думаю, это означает, что вам нужно посмотреть на select.kevent() вместо Python на mac.

Смежные вопросы