Обходной путь для Pythonbrew не удался, потому что test_socket не может решить? - PullRequest
0 голосов
/ 03 ноября 2010

Я использую pythonbrew для установки Python 2.6.6 на Snow Leopard.Сбой с ошибкой readline, затем ошибка сокета.Я установил readline из источника, что порадовало установщика при следующей попытке, но ошибка сокета осталась:

test_socket
test test_socket failed -- Traceback (most recent call last):
  File "/Users/gferguson/python/pythonbrew/build/Python-2.6.6/Lib/test/test_socket.py", line 483, in testSockName
    my_ip_addr = socket.gethostbyname(socket.gethostname())
gaierror: [Errno 8] nodename nor servname provided, or not known

Копание с системой Python показывает:

>>> import socket
>>> my_ip_addr = socket.gethostbyname(socket.gethostname())
Traceback (most recent call last):
  File "", line 1, in 
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
>>> socket.gethostname()
'S1WSMA-JHAMI'
>>> socket.gethostbyname('S1WSMA-JHAMI')
Traceback (most recent call last):
  File "", line 1, in 
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
>>> socket.gethostbyname('google.com')
'74.125.227.20'

Я триангулировалпроблема с IRB в Ruby:

IPSocket.getaddress(Socket.gethostname)
SocketError: getaddrinfo: nodename nor servname provided, or not known

Итак, я не уверен, является ли это ошибкой в ​​распознавателе, не понимающей имя хоста, или есть что-то странное в конфигурации машины, или если это что-то странноев поиске DNS нашей сети, но что бы это ни было, установщик не рад.

Я думаю, что это доброкачественный сбой в установщике, поэтому я чувствую себя в безопасности, чтобы заставить тест пройти успешно, но я неконечно, как сказать pythonbrew, как игнорировать это тестовое значение или, в частности, передать test_socket.

Я также вижу следующие статусы, но пока не выяснил, значимы ли они:

33 tests skipped:
    test_al test_bsddb test_bsddb3 test_cd test_cl test_codecmaps_cn
    test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr
    test_codecmaps_tw test_curses test_dl test_epoll test_gdbm test_gl
    test_imageop test_imgfile test_largefile test_linuxaudiodev
    test_normalization test_ossaudiodev test_pep277 test_py3kwarn
    test_smtpnet test_socketserver test_startfile test_sunaudiodev
    test_timeout test_urllib2net test_urllibnet test_winreg
    test_winsound test_zipfile64
1 skip unexpected on darwin:
    test_dl

У кого-нибудь есть опыт установки Python 2.6.6 с pythonbrew на Snow Leopard?


Обновление: я только что попробовал команду socket.gethostbyname(socket.gethostname()) из PytHon установлен на моем MacBook Pro с Snow Leopard, и он успешно сообщил мой IP-адрес, поэтому проблема заключается в конфигурации системы на работе.Я собираюсь спросить у родного сайта Apple «SO» и посмотреть, знает ли кто-нибудь, что это может быть.

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

У меня точно такая же проблема в OSX 10.7 стандартном Perl и Macports Perl.

Кажется, что socket.gethostname() работает, но, по крайней мере, на моем Mac, запускает ответ на этот вопрос, которыйидентично запуску имени хоста в терминале, не работает.

Если я сделаю:

local_ip = socket.gethostbyname(local_ip+".local")

Я получаю свой IP-адрес без проблем.

Так что это либопричуды OSX, или мои настройки довольно странные.Я остановлюсь на последнем, так как Zeroconf.py не работает на моей машине из-за этой проблемы, и я уверен, что автор поймал ее.

0 голосов
/ 12 ноября 2010

Решением было --force pythonbrew для установки, несмотря на ошибки.

Я протестировал ответы сокетов, используя встроенные Python, Perl и Ruby, и у них возникла та же проблема с разрешением имени локального хоста.Я протестировал использование текущей версии Ruby и Python на одном из моих Linux-блоков, и вызовы сработали, поэтому я был почти уверен, что это что-то вне конфигурации этого конкретного Mac.

После принудительной установки я протестировал вызовы сокетов для других хостов и получил ожидаемые результаты, и у меня не было никаких проблем при выполнении других сетевых задач, поэтому я думаю, что все в порядке.

...