【发布时间】: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