分析
事情是这样的,我想使用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命令,同时手机注意安装提示,选择安装即可。