【问题标题】:getaddrinfo unable to resolve hostgetaddrinfo 无法解析主机
【发布时间】:2011-08-16 05:01:49
【问题描述】:

我遇到了一个奇怪的问题。我有这个 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 时,只有一个 mDNS 查询出现在 "My-Name-MacBook-Pro.local" 上。但是,当命令行尝试打开google.com 时,会发出一个针对"google.com" 的常规DNS 查询,我发现如果我将Google 的IP 硬编码在/etc/hosts 中,那么来自应用程序的请求终于开始工作了。

似乎有些奇怪的东西一定是改变了应用程序解析域名的方式,但我不知道会发生什么。

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

编辑:我没有使用代理访问互联网

【问题讨论】:

  • 您实际使用的是urllib 还是urllib2?如果urllib2 有误,请更正您问题上的标签。
  • 您是否使用代理访问互联网?

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


【解决方案1】:

请注意,您没有设置阻止这种情况的 HTTP_PROXY 环境变量。 (在这种情况下,这将是一个糟糕的错误消息。给定正确的目录并重试,例如

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2017-03-26
    • 2013-02-06
    • 1970-01-01
    • 2015-02-27
    相关资源
    最近更新 更多