通过代理安装python模块

das*_*man 3 python proxy urllib2

我想安装一些使用easy_install的python包.他们在设置脚本中使用urrlib2模块.我尝试使用公司代理让easy_install下载所需的软件包.因此,为了测试代理conn,我尝试了以下代码.我不需要在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
Run Code Online (Sandbox Code Playgroud)

这是我的代码的问题吗?或是代理不允许从python进程连接?我可以通过设置代理来安装R包.

Bur*_*lid 15

设置以下环境变量:

HTTP_PROXY=http://user:password@your-company-proxy.com:8080
Run Code Online (Sandbox Code Playgroud)

以及

HTTPS_PROXY=http://user:password@your-company-proxy.com:8080
Run Code Online (Sandbox Code Playgroud)

如果您的代理端口不是8080,您应该使用适当的端口号更改8080.
如果您无权修改全局系统变量(只有拥有本地管理员权限才能执行此操作),只需将其添加到用户级变量即可.

My Computer > Properties > Advanced > Environment Variables(或在Windows 7中为"高级属性")设置它

设置该变量后,关闭所有cmd窗口并再次启动命令提示符.然后,您可以使用常规setuptools easy_installpip下载和安装Python包.

如果你需要通过Python使用它; 该requests库采用的怪癖的关怀httpliburllib.

requests将自动读取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)
Run Code Online (Sandbox Code Playgroud)