3

easy_install を使用する python パッケージをいくつかインストールしたいと考えています。彼らは、セットアップ スクリプトで urrlib2 モジュールを使用しています。会社のプロキシを使用して、easy_install に必要なパッケージをダウンロードさせてみました。したがって、プロキシ接続をテストするために、次のコードを試しました。IE でプロキシの資格情報を提供する必要はありません。

proxy = urllib2.ProxyHandler({"http":"http://mycompanyproxy-as-in-IE:8080"})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
site = urllib2.urlopen("http://google.com")

Error:
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\Python27\lib\urllib2.py", line 126, in
 return _opener.open(url, data, timeout)
 File "C:\Python27\lib\urllib2.py", line 406, in
  response = meth(req, response)
 File "C:\Python27\lib\urllib2.py", line 519, in
  'http', request, response, code, msg, hdrs)
 File "C:\Python27\lib\urllib2.py", line 444, in
return self._call_chain(*args)
 File "C:\Python27\lib\urllib2.py", line 378, in
   result = func(*args)
 File "C:\Python27\lib\urllib2.py", line 527, in
   raise HTTPError(req.get_full_url(), code, msg
  urllib2.HTTPError: HTTP Error 407: AuthorizedOnly

私のコードに問題がありますか?または、プロキシが python プロセスからの接続を許可していませんか? プロキシを設定することで R パッケージをインストールできます。

4

4 に答える 4

17

次の環境変数を設定します。

HTTP_PROXY=http://user:password@your-company-proxy.com:8080

としても

HTTPS_PROXY=http://user:password@your-company-proxy.com:8080

プロキシ ポートが 8080 でない場合は、8080 も適切なポート番号に変更する必要があります。
グローバル システム変数を変更する権限がない場合 (ローカルの管理者権限がある場合にのみ変更できます)、単純にユーザー レベルの変数に追加します。

My Computer > Properties > Advanced > Environment Variables(またはWindows 7の場合は「詳細プロパティ」)から設定します

その変数を設定したら、すべてのcmdウィンドウを閉じて、コマンド プロンプトを再度起動します。easy_installその後、通常の setuptoolsを使用して、pipPython パッケージをダウンロードしてインストールできます。

Python経由で使用する必要がある場合; ライブラリはrequestsと の癖を処理httpliburllibます。

requestsHTTP_PROXYプロキシを自動的に読み取って使用します。ただし、手動で行う方法は次のとおりです(docsの例):

import requests

proxies = {
  "http": "http://user:pass@foo.bar.zoo:8080",
  "https": "http://user:pass@foo.bar.zoo:8080",
}

requests.get("http://example.org", proxies=proxies)
于 2012-08-27T15:15:08.820 に答える
-1

エラーには、認証も必要であることが示されています。次のコードを試してください:

proxy = urllib2.ProxyHandler({"http":"http://mycompanyproxy-as-in-IE:8080"})
proxy_auth_handler = urllib2.HTTPBasicAuthHandler()
proxy_auth_handler.add_password('realm', 'host', 'username', 'password')
opener = build_opener(proxy, proxy_auth_handler)
urllib2.install_opener(opener)
site = urllib2.urlopen("http://google.com")

これはうまくいくはずだと思います。

于 2012-08-27T15:02:00.367 に答える