我想安装几个使用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软件包。
设置以下环境变量:
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中,则设置为“高级属性”)
My Computer > Properties > Advanced > Environment Variables
设置完该变量后,关闭所有cmd窗口并再次启动命令提示符。然后,您可以使用常规的setuptoolseasy_install并pip下载和安装Python软件包。
cmd
easy_install
pip
如果您需要通过Python使用它;该requests库采用的怪癖的关怀httplib和urllib。
requests
httplib
urllib
requests将自动读取HTTP_PROXY和使用代理;但是这是您手动执行的操作(例如docs中的示例):
HTTP_PROXY
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)