PIP安装第三方库报错SSL: CERTIFICATE_VERIFY_FAILED

本文介绍如何通过指定受信任的主机来升级pip工具,确保在安装Python包时的安全性。

pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org  --upgrade  pip

正在请求:https://movie.douban.com/top250?start=0 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=25 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=50 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=75 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=100 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=125 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=150 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=175 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=200 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000) 正在请求:https://movie.douban.com/top250?start=225 请求失败:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)
最新发布
11-05
你遇到的错误是: ``` [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate ``` 这个错误通常出现在 **macOS 系统上使用 Python 的 `urllib` 或 `requests` 库访问 HTTPS 网站时**,Python 无法找到系统的证书(Certificates),因此无法验证 SSL 证书的有效性,导致 HTTPS 请求失败。 --- ### ✅ 解决方案 #### ✅ 方法一:手动指定证书路径(推荐) 你可以手动告诉 Python 使用系统的证书路径来验证 HTTPS 请求。 ```python import ssl ssl._create_default_https_context = ssl._create_unverified_context ``` 将上面这段代码添加到你的代码中,**禁用 SSL 证书验证**(适用于测试环境): ```python import ssl import urllib.request import urllib.error import time from html.parser import HTMLParser # 禁用 SSL 证书验证 ssl._create_default_https_context = ssl._create_unverified_context # 后续的代码保持不变 class DoubanTop250Parser(HTMLParser): def __init__(self): super().__init__() self.in_rank = False self.in_title = False self.in_rating = False self.current_data = {} self.data_list = [] def handle_starttag(self, tag, attrs): if tag == 'em': self.in_rank = True if tag == 'span' and ('class', 'title') in attrs: self.in_title = True if tag == 'span' and ('class', 'rating_num') in attrs: self.in_rating = True def handle_data(self, data): if self.in_rank: self.current_data['rank'] = data self.in_rank = False if self.in_title: self.current_data['title'] = data self.in_title = False if self.in_rating: self.current_data['rating'] = data.strip() self.in_rating = False self.data_list.append(self.current_data) self.current_data = {} def get_data(self): return self.data_list def fetch_douban_top250(): base_url = 'https://movie.douban.com/top250' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } all_movies = [] for start in range(0, 250, 25): url = f'{base_url}?start={start}' print(f'正在请求:{url}') req = urllib.request.Request(url, headers=headers) try: with urllib.request.urlopen(req, timeout=10) as response: html = response.read().decode('utf-8') parser = DoubanTop250Parser() parser.feed(html) all_movies.extend(parser.get_data()) time.sleep(2) except urllib.error.URLError as e: print(f"请求失败:{e.reason}") continue for movie in all_movies: print(f"排名:{movie.get('rank')},电影名:{movie.get('title')},评分:{movie.get('rating')}") if __name__ == '__main__': fetch_douban_top250() ``` --- ### ✅ 方法二:安装 Python 的证书(适用于 macOS) 如果你不想禁用 SSL 验证,可以运行以下命令安装证书(适用于 macOS): ```bash /Applications/Python\ 3.x/Install\ Certificates.command ``` > ⚠️ 请将 `3.x` 替换为你安装的 Python 版本,例如 `Python 3.11` 这个命令会将 Python 的证书路径指向系统的根证书,解决 HTTPS 请求失败的问题。 --- ### ✅ 方法三:使用 `certifi` 包(需安装库,但更安全) 虽然你说“不安装库”,但如果你愿意安装一个用于证书的库,可以使用 `certifi`: ```bash pip install certifi ``` 然后在代码中指定证书路径: ```python import os import certifi os.environ['REQUESTS_CA_BUNDLE'] = certifi.where() ``` --- ### ✅ 总结 | 方法 | 是否需要安装库 | 安全性 | 适用场景 | |------|----------------|--------|----------| | 禁用 SSL 验证 | ❌ 不需要 | ⚠️ 不安全 | 测试环境 | | 安装 Python 证书 | ❌ 不需要 | ✅ 安全 | macOS 系统用户 | | 使用 certifi | ✅ 需要安装 | ✅ 安全 | 生产环境推荐 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值