2010-11-03 143 views
0

我使用pythonbrew在Snow Leopard上安裝Python 2.6.6。它失敗了一個readline錯誤,然後是一個套接字錯誤。我安裝源,這使得在下次嘗試安裝快樂的ReadLine,但套接字錯誤仍然存​​在:由於test_socket無法解決,導致Pythonbrew失敗的解決方法?

 
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' 

我三角形的問題與Ruby的IRB:

 
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安裝?


更新:我只是嘗試了socket.gethostbyname(socket.gethostname())命令從我的MacBook Pro雪豹安裝了Python,它成功地報道我的IP回來,看來問題是在工作中的系統配置。我要去問SO的兄弟「蘋果」網站,看看有沒有人知道它可能是什麼。

回答

0

解決方案是用--force pythonbrew來安裝,儘管有錯誤。

我使用內置的Python,Perl和Ruby測試了套接字響應,並且它們遇到了解決localhost名稱相同的問題。我在我的一個Linux機器上使用當前版本的Ruby和Python進行了測試,並且調用能夠正常工作,所以我非常確定這是特定Mac配置之外的事情。

強制安裝後,我測試了套接字調用其他主機,並得到了預期的結果,並沒有任何其他網絡任務的問題,所以我認爲一切都很好。

2

我在OSX 10.7標準Perl和Macports Perl上遇到完全相同的問題。

看起來socket.gethostname()正在工作,但至少在我的Mac上,運行對此的回覆(與在終端中運行主機名相同)不起作用。

如果我做的:

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

我得到我的IP地址,一點問題都沒有。

所以這是一個OSX的怪癖,或者我的設置很奇怪。因爲這個問題,Zeroconf.py在我的機器上失敗了,我相信作者會抓住這個問題。

+0

兩年後,我發現這是正確的解決方案。我添加了本地電話,一切正常。 – Hectron 2015-08-20 19:48:02