Bootstrap

解决urllib3.exceptions.ProxyError: (‘Unable to connect to proxy‘, OSError(0, ‘Error‘))

分析

事情是这样的,我想使用python -m uiautomator2 init命令来给安卓设备安装软件,然后没法安装上,弹出警告requests.exceptions.ProxyError: HTTPSConnectionPool(host='raw.githubusercontent.com', port=443): Max retries exceeded with url: /openatx/stf-binaries/0.3.0/node_modules/%40devicefarmer/minitouch-prebuilt/prebuilt/arm64-v8a/bin/minitouch (Caused by ProxyError('Unable to connect to proxy', OSError(0, 'Error')))

根据错误,查找到了uiautomator2的库文件(),在init.py里定位到def cache_download函数,找到r = requests.get(url, stream=True, headers=headers, timeout=None)函数这一行,可以看到这里没有指明使用代理服务器去做这个get请求,所以访问不了,要在此处声明使用代理服务器,并给出代理服务器信息。

解决方法

在你的uiautomator2安装包的路径找到init.py不知道包的路径的话,在控制行那些错误提示里可以找到
在这里插入图片描述
1.首先在init文件开头处,添加这段代码,声明一个全局变量

proxy_host = '127.0.0.1'
proxy_port = 7890
proxy_url = f'http://{proxy_host}:{proxy_port}'
proxies = {
    'http': proxy_url,
    'https': proxy_url
}

2.在init文件里找到所有调用request.get的地方,修改这个函数的参数,新增参数proxies=proxies即可。


    r = requests.get(url, stream=True, headers=headers, timeout=None,proxies=proxies)

proxy_host和proxy_port可以去系统设置里的代理看。
在这里插入图片描述

重新执行一遍python -m uiautomator2 init命令,同时手机注意安装提示,选择安装即可。

在这里插入图片描述

;