You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下VS Code用Python3调用NLTK遇证书验证失败错误

MacOS下NLTK下载words语料库时SSL证书验证失败的解决方法

问题详情

在MacOS系统中使用VS Code和Python3开发拼写检查器时,执行nltk.download('words')触发以下SSL证书错误:

[nltk_data] Error loading words: <urlopen error [SSL:
[nltk_data]     CERTIFICATE_VERIFY_FAILED] certificate verify failed:
[nltk_data]     unable to get local issuer certificate (_ssl.c:1000)>

使用的核心代码如下:

import re # 移除标点符号(如? ! . ,)
import tkinter as tk # 图形化UI库
from tkinter.scrolledtext import ScrolledText # 滚动文本组件

import nltk
nltk.download('words') # 下载单词库用于验证单词有效性
from nltk.corpus import words


class SpellingChecker:

    def __init__(self):
        self.root = tk.Tk() # 初始化Tkinter主窗口
        self.root.geometry("600x500")

        self.text = ScrolledText(self.root, font=("Helvetica", 14))
        self.text.bind("<KeyRelease>", self.check) # 按键释放时触发拼写检查
        self.text.pack()

        self.old_spaces = 0 # 初始空格计数为0

        self.root.mainloop() # 启动GUI主循环


    def check(self, event):
        content = self.text.get("1.0", tk.END)  # 获取文本框全部内容
        space_count = content.count(" ") # 统计空格数量

        if space_count != self.old_spaces: # 空格数变化时重新检查拼写
            self.old_spaces = space_count

            for tag in self.text.tag_names():
               self.text.tag_delete(tag)
            
            for word in content.split(" "):
                cleaned_word = re.sub(r"[^\w]", "", word.lower())
                if cleaned_word not in words.words():
                    position = content.find(word)
                    self.text.tag_add(word, f"1.{position}", f"1.{position + len(word)}")
                    self.text.tag_config(word, foreground="red")
        
SpellingChecker()

已尝试重新安装NLTK、查阅技术论坛及视频教程,问题仍未解决。

可行解决方案

方法1:运行Python证书安装脚本(推荐)

MacOS官方安装的Python3默认缺少SSL根证书,可通过官方脚本修复:

  1. 打开终端,执行对应版本的证书安装命令(将3.x替换为你的Python版本,如3.11):
    /Applications/Python\ 3.x/Install\ Certificates.command
    
  2. 脚本执行完成后,重新运行你的拼写检查器脚本,尝试下载NLTK数据。

方法2:临时禁用SSL验证下载数据

如果方法1无效,可通过代码临时绕过SSL验证:
修改代码中NLTK相关的导入和下载部分:

import nltk
import ssl

# 禁用SSL证书验证
try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context

nltk.download('words')
from nltk.corpus import words

方法3:手动下载并放置语料库

  1. 手动下载words语料库压缩包,解压得到words文件夹。
  2. 在MacOS中创建NLTK数据目录(若不存在):~/nltk_data/corpora/
  3. 将解压后的words文件夹放入~/nltk_data/corpora/目录下。
  4. 修改代码,移除nltk.download('words')语句,直接导入使用from nltk.corpus import words即可。

内容的提问来源于stack exchange,提问作者B4scul3g10n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:35:55