来自macOS 10.15上的Xcode/CLT的/usr/bin/python3
(目前是DB6/PB5,使用Xcode 11 beta 6)对于所有来自PSL的HTTPS请求(例如来自urllib.request
)失败,并出现{
$ /usr/bin/python3 -c 'import urllib.request; urllib.request.urlopen("https://www.apple.com/")'
...
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>
如何解决这个问题?在
(我知道答案,很快就会贴出来;只是分享一下,以防别人碰到。)
问题是
/usr/bin/python3
(来自Xcode或CLT)无法正确定位/etc/ssl
中的信任存储,正如我们可以看到的使用ssl.get_default_verify_paths()
:它正在调查不存在的
/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl
。在知道了这一点,我们可以使用以下方法:
^{pr2}$我已经向苹果提交了一份错误报告(顺便说一句,刚刚意识到bugreport.apple.com现在不见了,我不得不使用反馈助手网站)。打开雷达https://openradar.appspot.com/7111585(不幸的是,雷达号码是错误的-因为bugreport.apple.com不见了,我没有雷达号了,只有一个反馈号
FB7111585
)。在作为对@4ae1e1答案的补充,您可以创建一个指向SSL文件夹的符号链接,而不是同步它。这将使
/etc/ssl
中的任何更改保持在/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/etc/ssl/
的最新状态。在应该这么做。在
python3.6 -c 'import requests; requests.get("https://www.apple.com/")'
试试这个。 看看这对你是否有用。在
相关问题 更多 >
编程相关推荐