getaddrinfo не может разрешить хост - PullRequest
2 голосов
/ 16 августа 2011

У меня странная проблема. У меня есть это приложение 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, обычный запрос DNS отправляется на "google.com" Я обнаружил, что если я жестко закодировал IP-адрес Google в /etc/hosts, тогда запрос из приложения, наконец, начал работать.

Кажется, что-то странное должно изменить то, как приложение разрешает доменные имена, но я понятия не имею, что могло бы сделать это.

Я использую Mac OSX 10.6.7 и Python 2.6.

Редактировать : Я не использую прокси для доступа в Интернет

1 Ответ

1 голос
/ 16 августа 2011

Просто посмотрите, что у вас не установлена ​​переменная окружения HTTP_PROXY, которая препятствует этому.(В этом случае это было бы плохое сообщение об ошибке. При условии правильного каталога и попробуйте снова, как

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