Проблемы с выбором модуля на Python 2.5 - PullRequest
3 голосов
/ 25 февраля 2009

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

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

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, но у меня тоже есть iMac с той же версией ОС, и он работает нормально:

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

Ответы [ 4 ]

6 голосов
/ 26 февраля 2011

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

2 голосов
/ 25 февраля 2009

Я думаю, что ваш ответ здесь

http://atomized.org/2008/12/python-on-os-x-leopard-lacks-selectpoll/

0 голосов
/ 05 марта 2009

используйте MacPorts версию python на вашем MBP.

Mac OS X поддерживает это. Яблочный бульон Leopard python 2.5.1 не имеет.

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

Вот сравнение стандартного Python с леопардовым покрытием и последних версий MacPorts python2,5 ...


Леопардовый питон от Apple (python 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 голосов
/ 25 февраля 2009

select.poll ()

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

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

...