我使用 Streamlit(在 Mac 上)构建了一个应用程序,该应用程序使用来自雅虎财经的数据,并且我正在尝试在本地运行它。上周它工作正常,但现在当我尝试运行它时,出现以下错误:
SSLError: HTTPSConnectionPool(host='finance.yahoo.com', port=443): Max retries exceeded with url: /quote/SLY (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1125)')))
这也阻止了我安装软件包,因此它完全停止了我的项目进度。在解决这个问题之前我无能为力。
'我以前从未真正开发过应用程序,所以我不知道在这种情况下该怎么办(我在这方面真的是菜鸟,所以请原谅我的无知)。我曾尝试在线研究这个问题,并相信我需要“添加证书”到我的证书列表中,但不明白如何做到这一点。我没有在我的代码中使用“请求”。事实上,我的代码实际上只是 VScode 中的一个简单脚本,我在终端中使用
streamlit run myapp.py
运行它。我曾考虑过禁用 SSL 认证,但显然这是一个坏主意(我什至不知道如何做到这一点)。
我会尽力大致展示步骤,如果您有问题,请随时询问。
第1步: 获取 SSL 证书。
您可以从任何值得信赖的网站轻松购买。
第2步: 在您的服务器上安装 SSL 证书。
执行此操作的具体步骤取决于您的托管环境和您拥有的证书类型。但不要担心他们中的大多数人都有如何添加它们的指南
例如,如果您只想在本地使用它,我相信有一个技巧,例如这个示例
第3步: 配置您的 Streamlit 应用程序以使用 SSL 证书。
在
.streamlit/config.toml file
中,添加以下行:
[server]
enableCORS = false
headless = true
port = 8080
enableXsrfProtection = true
certfile = /path/to/certificate.crt
keyfile = /path/to/privatekey.key
(我写了path,但这些应该是给定文件的路径)
这对我有帮助(Mac OS 13.6.3):
pip install --upgrade certifi
Install Cerificates.command
或 Cerificates.command
。就我而言,它是:/Applications/Python 3.11/Install Certificates.command
更多详情请参阅这篇文章