2011-08-16 4 views
2

Je rencontre un problème étrange. J'ai cette application Python et lorsque je tente d'ouvrir une URL dans l'application, par exemple urllib2.urlopen("http://google.com", None) je reçois l'erreur suivante:getaddrinfo impossible de résoudre l'hôte

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

Cependant quand je fais la même chose sur l'interpréteur de ligne de commande python, il fonctionne très bien. Le même exécutable python est utilisé pour l'application et la ligne de commande.

nslookup google.com semble fonctionner correctement. J'ai ouvert wireshark et il semble que lorsque l'application essaie d'ouvrir google.com seulement une requête mDNS sort pour "My-Name-MacBook-Pro.local". Toutefois, lorsque la ligne de commande tente d'ouvrir google.com une requête DNS normale sort pour "google.com", j'ai trouvé si j'ai codé en dur IP de Google dans /etc/hosts puis la demande de l'application a finalement commencé à travailler.

Il semble que quelque chose d'étrange doit changer la façon dont l'application résout les noms de domaine, mais je n'ai aucune idée de ce qui pourrait être fait. Je suis sous Mac OSX 10.6.7 et Python 2.6.

Modifier: Je ne suis pas d'utiliser un proxy pour accéder à Internet

+0

Utilisez-vous réellement '' urllib' ou urllib2'? S'il vous plaît corriger les balises sur votre question si 'urllib2 'est faux – agf

+0

utilisez-vous un proxy pour accéder à Internet? – monkut

Répondre

1

Il suffit de voir que vous n'avez pas HTTP_PROXY environnement ensemble variable qui empêche cela. (Dans ce cas, ce serait un mauvais message d'erreur. Compte tenu du répertoire approprié et essayez à nouveau, comme

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