我昨天在Ubuntu上设置了一个代理进行测试,并安装了一些单独的lib,包括用于fiddler的Linux构建的新证书。关闭所有代理设置(例如进入网络设置并关闭代理“系统范围”)后,我可以通过除python之外的所有工具正常访问网络。浏览器工作正常,我可以ping端点,我可以使用wget和curl没有任何问题,但python的网络设置似乎搞砸了。
这是我运行pip install -U pyopenssl
时的输出:
$ pip install -U pyopenssl
Collecting pyopenssl
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f89bd58dfd0>: Failed to establish a new connection: [Errno 111] Connection refused',))': /simple/pyopenssl/
Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f89bd58db10>: Failed to establish a new connection: [Errno 111] Connection refused',))': /simple/pyopenssl/
...
Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7f89bd595f90>: Failed to establish a new connection: [Errno 111] Connection refused',))': /simple/pyopenssl/
Could not find a version that satisfies the requirement pyopenssl (from versions: )
No matching distribution found for pyopenssl
运行一个简单的测试urllib2也失败了(urllib2.URLError :):
import urllib2
def internet_on():
try:
urllib2.urlopen('http://216.58.192.142', timeout=1)
print "it worked!"
return True
except urllib2.URLError as err:
print "it did not work"
return False
internet_on()
我使用的一些工具中的请求库也会立即失败:
requests.exceptions.ProxyError: HTTPConnectionPool(host='127.0.0.1', port=8888): Max retries exceeded with url: http://10.30.0.63/ (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f4c9c327f90>: Failed to establish a new connection: [Errno 111] Connection refused',)))
我猜python认为我不再支持代理了。有没有办法调试或重置python的网络配置?
答案 0 :(得分:0)
您是否尝试过使用pip --trusted-host pypi.python.org和/或--proxy http://PROXYNAME.com?
我在pip与系统代理交互方面有过类似的经历。我想pip看起来像pypi,命中代理,并且没有找到匹配的分布(逻辑上)。
完整命令看起来像:
pip install -U --trusted-host pypi.python.org --proxy http://PROXYNAME.com pyopenssl
如果您的代理干扰了证书,Trusted host会有所帮助。
如果有帮助,请告诉我!另外,请检查env | grep proxy
,以防万一您在环境中设置代理的方式有问题。
更一般地说,check out this question about handling proxies with urllib。
答案 1 :(得分:0)
修正了问题。根据heemayl关于http_proxy变量的评论,我检查了bashrc中的环境变量,看到一个脚本可能添加了 http_proxy 和 https_proxy ,其中urllib.getproxies( )使用。
删除这些行可解决问题。谢谢,heemayl。