getaddrinfo无法解析主机

时间:2011-08-16 05:01:49

标签: python macos dns osx-snow-leopard urllib2

我遇到了一个奇怪的问题。我有这个Python应用程序,当我尝试在应用程序中打开一个url时,例如urllib2.urlopen("http://google.com", None)我收到以下错误:

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

然而,当我在python命令行解释器上做同样的事情时,它工作正常。应用程序和命令行都使用相同的python可执行文件。

nslookup google.com似乎工作正常。我打开了wireshark,看起来当应用程序尝试打开google.com时,只有"My-Name-MacBook-Pro.local"的mDNS查询出现。但是,当命令行尝试打开google.com "google.com"的常规DNS查询时,我发现如果我在/etc/hosts中对Google的IP进行了硬编码,那么应用程序的请求最终会开始工作。< / p>

似乎一些奇怪的东西必须改变应用程序如何解析域名,但我不知道该怎么做。

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

修改:我没有使用代理来访问互联网

1 个答案:

答案 0 :(得分:1)

只是看到你没有设置HTTP_PROXY环境变量,这阻止了这一点。 (在这种情况下,这将是一个错误的错误消息。给定正确的目录并再试一次,如

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