Skip to main content
 首页 » 编程设计

python之getaddrinfo 无法解析主机

2025年05月04日12kuangbin

我遇到了一个奇怪的问题。我有这个 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。

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

请您参考如下方法:

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

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