2011-08-16 202 views
2

我有一個奇怪的問題。我有這樣的Python應用程序,當我嘗試在應用程序中打開一個網址,例如:urllib2.urlopen("http://google.com", None)我收到以下錯誤:getaddrinfo無法解析主機

IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known 

然而,當我做了Python命令行解釋同樣的事情,它工作正常。應用程序和命令行都使用相同的python可執行文件。

nslookup google.com似乎正常工作。我打開wireshark,它看起來像當應用程序試圖打開google.com只有mDNS查詢出去"My-Name-MacBook-Pro.local"。但是,當命令行嘗試打開google.com時,會出現一個正常的DNS查詢"google.com"我發現如果我在/etc/hosts中對Google的IP進行了硬編碼,則來自應用程序的請求最終開始工作。

看起來有點奇怪,必須改變應用程序如何解析域名,但我不知道該怎麼做。

我正在運行Mac OSX 10.6.7和Python 2.6。

編輯:我不使用代理服務器來訪問互聯網

+0

你實際使用'urllib'或'urllib2'樣?請更正你的問題,如果'的urllib2標籤'是錯的。 – agf

+0

你使用代理來訪問互聯網嗎? – monkut

回答

1

只是看到你沒有HTTP_PROXY環境變量設置這是防止這一點。 (在這種情況下,這將是一個糟糕的錯誤消息。考慮到適當的目錄,然後再試一次,

import urllib 
r = urlib.urlopen('http://www.google.com') 
print r.read()