requests.exceptions.SSLError: HTTPSConnectionPool pycharm 中使用requests报错

1错误记录

安装完anaconda 以后如果自己创建了新的python环境,并且要使用该环境,那么相关的环境变量就一定要配置上。
配置示例如下(其中python3.7是创建的新的env):
新增环境变量:
PYTHON_3.7=C:\Users\zheng.conda\envs\python3.7
path中添加如下:
%PYTHON_3.7%;
%PYTHON_3.7%\scripts;
%PYTHON_3.7%\Library\bin;

若不配,在使用requets做http请求时会出现如下错误:

requests.exceptions.SSLError: HTTPSConnectionPool(host='xhiot.xhmind.com', port=443): 
Max retries exceeded with url: /seB/api/v1/Token/GetToken 
(Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

参考连接:https://stackoverflow.com/questions/54135206/requests-caused-by-sslerrorcant-connect-to-https-url-because-the-ssl-module

<think>好的,我现在要解决用户在从Hugging Face下载文件时遇到的SSLError问题,具体错误是urllib3的SSLErrorSSL: UNEXPECTED_EOF_WHILE_READING。首先,我需要分析可能的原因,然后给出相应的解决方案。 首先,用户提到的错误信息是SSL读取过程中遇到了意外的EOF,这可能与SSL握手失败有关。常见的原因包括网络连接不稳定、代理设置问题、SSL证书验证失败,或者是服务器端的问题。此外,用户之前提到过使用ModelScope社区下载模型时遇到代理错误,这可能表明用户处于需要代理的网络环境中,但当前的代理配置可能不正确,或者下载时没有正确绕过某些域名。 接下来,我需要参考用户提供的引用内容。引用[1]提到了从ModelScope下载模型时的代理错误,解决方法可能涉及正确配置代理或使用镜像站点。引用[2]提到在PyCharm中运行Hugging Face时,需要将特定域名添加到代理绕过列表,比如'DOMAIN-SUFFIX,cdn-lfs-us-1.huggingface.co, magic'。这说明用户可能在使用代理,但需要正确配置代理设置,或者某些域名没有被正确排除,导致SSL连接被中断。 可能的解决方案步骤包括: 1. **检查代理设置**:用户可能处于需要代理的网络环境中,但代理配置不正确。需要确保代理设置正确,或者在下载时临时禁用代理。此外,检查是否某些安全软件或防火墙拦截了连接。 2. **使用镜像站点**:Hugging Face的官方服务器可能在某些地区访问不稳定,使用国内镜像如阿里云的ModelScope可能更可靠。用户可以通过`os.environ['HF_ENDPOINT']`来切换下载源。 3. **禁用SSL验证**:虽然不推荐,但作为临时解决方案,可以禁用SSL验证。这可以通过设置环境变量`CURL_CA_BUNDLE`或在使用`huggingface_hub`库时传递参数`ignore_ssl_errors=True`来实现。但需要注意安全风险。 4. **更新相关库**:确保`urllib3`、`requests`、`huggingface_hub`等库是最新版本,以修复可能存在的SSL兼容性问题。 5. **调整超时设置**:增加下载时的超时时间,避免因网络延迟导致连接中断。 6. **检查系统SSL证书**:确保系统或Python环境中的根证书是最新的,可能需要更新证书包或手动指定证书路径。 在实施这些步骤时,需要提供具体的代码示例或命令,例如如何设置环境变量,如何修改下载代码。同时,要提醒用户禁用SSL验证的风险,并建议优先使用镜像站点或检查代理配置。 最后,生成相关问题,帮助用户进一步排查可能的问题,比如网络环境问题、代理配置、镜像使用等。</think>以下是解决Hugging Face下载时出现SSLError(SSL: UNEXPECTED_EOF_WHILE_READING)的完整方案: ### 解决方法 #### 1. 切换国内镜像源 通过环境变量强制指定Hugging Face镜像站: ```python import os os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' # 使用国内镜像 ``` 或使用阿里云ModelScope镜像: ```bash pip install modelscope from modelscope import snapshot_download snapshot_download('模型名称') ``` #### 2. 代理配置优化 若必须使用代理,在代码中显式指定代理参数: ```python import requests from huggingface_hub import hf_hub_download hf_hub_download( repo_id="模型ID", filename="文件名", local_dir="保存路径", proxies={'https': 'http://代理地址:端口'} # 例如{'https': 'http://10.10.1.10:3128'} ) ``` 同时需在代理规则中添加白名单: ``` DOMAIN-SUFFIX,huggingface.co, DIRECT DOMAIN-SUFFIX,hf-mirror.com, DIRECT ``` #### 3. 禁用SSL验证(临时方案) 在请求时添加验证跳过参数: ```python from huggingface_hub import HfApi api = HfApi() api._client._session.verify = False # 关闭全局验证 # 或单次请求禁用 hf_hub_download(..., ignore_ssl_errors=True) ``` #### 4. 更新基础组件 ```bash pip install --upgrade urllib3 requests huggingface_hub ``` #### 5. 手动指定CA证书路径 ```python import certifi os.environ['REQUESTS_CA_BUNDLE'] = certifi.where() ``` ### 典型错误场景验证 当使用`huggingface_hub==0.4.0`时,以下配置可解决问题: ```python import os os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com' os.environ['HTTP_PROXY'] = 'http://实际代理地址:端口' from huggingface_hub import hf_hub_download hf_hub_download( repo_id="bert-base-uncased", filename="config.json", local_dir="./models", resume_download=True, max_retries=5 ) ``` ### 技术原理 SSL握手失败通常由以下原因导致: $$ \text{SSL Error} = f(\text{网络波动}, \text{证书链不完整}, \text{TLS版本不匹配}) $$ 通过镜像源替换可绕过不稳定的国际链路;禁用验证则是跳过证书链检查;代理配置优化确保流量正确路由[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值