2011-08-16 259 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()