2011-08-16 15 views
2

私は奇妙な問題を抱えています。私は、このPythonアプリケーションを持っていると私は、アプリケーション内のURLを開こうとすると、例えばurllib2.urlopen("http://google.com", None)のために私は次のエラーを取得する:getaddrinfoがホストを解決できません

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

私はPythonのコマンドラインインタプリタ上で同じことを行うときしかし、それが正常に動作します。同じpython実行可能ファイルが、アプリケーションとコマンドラインの両方で使用されています。

nslookup google.comうまくいくようです。私はwiresharkを開いて、アプリケーションが開こうとするときのように見えるgoogle.com"My-Name-MacBook-Pro.local"のmDNSクエリだけが出ます。しかし、コマンドラインでgoogle.comを開こうとすると、通常のDNSクエリが"google.com"になります。私は、/etc/hostsにGoogleのIPをハードコードしていれば、アプリケーションからの要求が最終的に働き始めました。

アプリケーションがドメイン名を解決する方法を変える必要があると思われますが、これを行う可能性はありません。

私はMac OSX 10.6.7とPython 2.6を使用しています。

編集:私はインターネットに

+0

ようにあなたが実際に 'urllib'または' urllib2'を使用していますか? 'urllib2の場合は、あなたの質問にタグを修正してください'間違っています – agf

+0

あなたはインターネットにアクセスするためにプロキシを使用していますか? – monkut

答えて

1

へのアクセスにプロキシを使用していないだけで、あなたがこれを妨げているHTTP_PROXY環境変数が設定されていないことがわかります。 (それが悪いのエラーメッセージになり、その場合には、適切なディレクトリを考えると、再試行し、

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